从国外下载的人口数据,其人口数量使用了千分位逗号,在进行数据入库时需要将逗号移除,找了几个办法,最终使用了这个方法进行处理:
cat town.csv | perl -pe 's/(?<=\d),(?=\d)//g' > town-new.csv
这样就可以直接移除任意多个千分位逗号了。
technology backup/share
从国外下载的人口数据,其人口数量使用了千分位逗号,在进行数据入库时需要将逗号移除,找了几个办法,最终使用了这个方法进行处理:
cat town.csv | perl -pe 's/(?<=\d),(?=\d)//g' > town-new.csv
这样就可以直接移除任意多个千分位逗号了。
gitlab所在服务器进行了操作系统升级,从ubuntu 14.04升级到18.04,而且gitlab自身很久未进行升级,导致与现有版本有较大差距,升级过程有一定周折,所幸最终还是成功升级。
首先参考此网站进行升级:How to upgrade to latest Gitlab from version less then 10.8
但操作升级的不顺利,版本升级时全提示版本不对,不能升级。
使用apt list -a gitlab-ce*命令时发现其最小版本为10.7.0,于是尝试从这个版本进行升级,发现可以操作:
sudo apt-get install gitlab-ce=10.7.0-ce.0
然后再这个版本基础上再进行大版本升级,最终顺利升级至最新版本。
前一篇文章使用了scp跨两个内网进行文件传输,其实还可以有一种更简单的办法进行处理,就是构建SSH代理。
编辑.ssh目录下的config文件
nano ~/.ssh/config
然后指定不同的服务器,注意其中的ProxyCommand指令:
Host bridge1
HostName alias1.example.com
Host private1
ProxyCommand ssh -q bridge1 nc -q0 private1 22
Host private2
ProxyCommand ssh -q private1 nc -q0 private2 22
这样,就构建了private1、bridge1两个ssh代理,访问private2服务器可以将其当做一个本地服务器直接使用,也可以直接scp进行数据的上传和下载。
参考:http://sshmenu.sourceforge.net/articles/transparent-mulithop.html
数据分布在两个独立内网机器A、B上,机器C可同时访问A、B。
之前一直是两段式拷贝,即先将文件从A拷贝到C再从C拷贝到B。经搜索后,发现可以在C服务器上直接将数据从A到B进行传输。
具体命令如下:
scp -3 -r A:/path B:/path
参考:https://www.techrepublic.com/article/how-to-copy-a-file-between-two-remote-ssh-servers/
忘记从QGIS3哪个版本开始,在MAC中打开目录对话框就速度奇慢,导致我一开始都是直接将文件的绝对路径直接键入进来,避免打开文件对话框。搜索发现,此bug已有用户汇报了,且给出了一个解决方法:
在系统偏好设置->安全性与隐私->隐私->辅助功能中,将QGIS3.6的选项给去掉即可。
参考:https://gis.stackexchange.com/questions/310280/qgis-very-slow-when-browsing-files-on-macos
之前的老集群,使用的是ubuntu 16.04下的greenplum 5.8,后来随系统升级到5.19版本。最近发现运行速度变慢(慢得过分,可以一个sql喝几杯茶的程度),而且经过和在另个一个新集群上的相同数据对比测试,发现速度差别至少有2个量级。
首先尝试将数据库备份,删除再恢复,发现速度改善很小。有了上个集群的安装经验,于是决定将操作系统升级,并且将greenplum也升级6.0版本(其master版本是7.0,但稳定性还是有问题,发现有几个sql查询异常)。
在升级过程中,遇到一个小坑:机器名不要命名为host01-1的形式,会导致greenplum将其判别为一类特殊的host。这个问题还是通过浏览gpinitsystem的代码才找出来的。
另外也再记录一下postgis的安装过程。由于libxerces-c-dev和gp-xerces的冲突,postgis安装时需要将raster功能禁止,在greenplum安装完成后执行:
source /usr/local/gdbp/greenplum_path.sh
git clone https://github.com/greenplum-db/geosptial.git
cd geospatial/postgis/build/postgis-2.1.5
./configure --with-pgconfig=$GPHOME/bin/pg_config --without-raster --without-topology --prefix=$GPHOME
make USE_PGXS=1 clean all
sudo make USE_PGXS=1 install
这样在所有节点安装完成后即可开始greenplum的初始化脚本。
在全国地理信息资源目录服务系统上可以下载最新版本(2017年,1:1百万比例尺)的全国各要素基础数据,具体包括:
我们现在就需要其中的行政边界数据,本来以为下载后可以很方便的使用(有点想当然了),经过一番艰苦的处理后,数据终于是可用状态了。
在mac系统下进行了数据处理,使用了gdal/ogr、QGIS3,主要处理过程记录如下。
for i in `ls -d *.gdb`;do ogr2ogr -f "ESRI Shapefile" -lco ENCODING=UTF-8 -append shp $i;done
ogr2ogr -f "ESRI Shapefile" output1.shp -lco ENCODING=UTF-8 -dialect sqlite -sql "select st_union(geometry) as geometry,PAC,NAME from 'BOUA' group by PAC,NAME order by PAC,NAME" shp/BOUA.shp
ogr2ogr -f "ESRI Shapefile" output2.shp -lco ENCODING=UTF-8 -where "PAC>100000 and PAC<>250100" output1.shp
但这样生成的城市边界仅包括陆地边界,对于内陆型城市,在使用中问题不大,但对于沿海城市,则很多人类活动轨迹可能会超出陆地边界(比如舟山),因此还需要一个融合近海边界的城市边界。手头上有一个2012年版本的含海洋边界的城市边界数据,需要将其海洋边界数据融合到新的全国边界数据集中。
处理过程为:
因数据问题,此数据集中不含港澳台的海洋边界。
有的时候,需要在满足查询条件的情况,查询符合条件文本的前后几行。之前一直以为需要用python自行解决,没想到grep里有参数可以简单处理。
比如,在log记录,有的错误日志仅提供了错误内容,正在执行脚本的相关参数需要从上下文中进行推理,这时就可以采用此方法进行处理。
# 显示匹配行的前后3行
grep -3 'ERROR:' weibo.log
grep -C 3 'ERROR:' weibo.log
# 显示匹配行的后4行
grep -A 4 'ERROR:' weibo.log
# 显示匹配行的前2行
grep -B 2 'ERROR:' weibo.log
近期组建了一个新的大数据测试集群,由4个物理机器构成一个测试集群,分别命名为hadoop1-4号机器,想要进行MPP并行数据库的安装与测试工作。服务器物理机安装的操作系统为ubuntu server 18.04版本。开始以为可以采用lanchpad的官方库进行安装,发现greenplum官方目前并未支持ubuntu 18.04,需要从源码编译安装。在尝试编译的过程中遇到了几个错误,最终通过一个变通的方法进行了处理,在此记录一下过程。
简而言之,是greenplum所采用的xerces-c库与ubuntu官方库的版本不一致,导致调用时遇到了DSO missing错误。可以采用禁止gporca的查询优化器方法来避免此错误,同时安装postgis插件也需要禁止raster功能,或者移除官方的xerces-c库,使用greenplum自带的xerces-c库。
下面记录一下第二种方案的编译过程。
一、安装gp-xercesc
git clone https://github.com/greenplum-db/gp-xerces.git
cd gp-xerces
mkdir build
cd build
../configure --prefix=/usr/local
make
sudo make install
二、安装gporca
git clone https://github.com/greenplum-db/gporca.git
cd gporca
cmake -GNinja -H. -Bbuild
sudo ninja install -C build
三、安装gpdb
git clone https://github.com/greenplum-db/gpdb.git
cd gpdb
sudo ./README.ubuntu.bash
此时系统会默认安装libxerces-c-dev库,需要将此库移除以使其正确编译。
sudo apt remove libxerces-c-dev ###此库会有冲突
./configure --enable-orca --with-perl --with-python --with-libxml --prefix=/usr/local/gpdb
make -j32
sudo make -j32 install
sudo ldconfig
这样可以确保编译通过,且可安装,但在初始化greenplum之前还需要确保:
1、master机器到其他机器可以ssh密钥登陆
2、limits.conf和sysctl.conf已修改,且修改后重新登陆过。
3、在其他各机器执行相同的操作。
上述操作执行完之后,在master节点,指定某一目录作为greenplum的数据目录,比如/data,然后在master节点上建立/data/master目录,在所有节点上建立/data/primary目录。然后:
source /usr/local/gpdb/greenplum_path.sh
cd /data/master
cp /usr/local/gpdb/docs/cli_help/gpconfigs/hostfile_gpinitsystem .
cp /usr/local/gpdb/docs/cli_help/gpconfigs/gpinitsystem_config .
修改这两个配置文件,hostfile记录了greenplum所有机器的hostname,一行一个机器名;gpinitsystem_config记录了greenplum的目录设置和segment设置参数,需进行相应的修改,完成后即可启动数据库。
gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem
在Mac的launchpad中突然发现了几个没用过的图标,点开后发现是一些对应的网站地址,但在launchpad中无法删除,网上搜索后发现了一个对应的解决办法:
使用终端运行:
cd /private/var/folders/
find . | grep com.apple.dock.launchpad/db/db
根据找出的对应目录,进入到对应的目录,然后:
sqlite3 db
使用sql命令依据标题的title删除对应的图标:
delete from apps where title like ‘%标题%’;
退出后执行:
killall dock
这样图标就删除了。