千萬級數據遷移工具DataX實踐和geom類型擴展

## DataX快速入門參考 > 官方https://github.com/alibaba/DataX/blob/master/userGuid.md ## 環境要求 > Linux JDK(1.8以上,推薦1.8) Python(推薦Python2.6.X) Apache Maven 3.x (Compile DataX) ## 打包 mvn -U clean package assembly:assembly -Dmaven.test.skip=true ### 本地idea調用 > D:\pm\DataX\datax-core\src\main\job爲測試腳本文件夾 一、job.json 爲經過streamreader生成模擬數據,streamwriter用於輸出 二、job_mysql_read_to_print.json 經過查詢mysql數據,streamwriter用於輸出 三、job_postgresql_to_mysql_read_write.json 經過查詢postgresql數據,寫入mysql 四、job_postgresql_to_postgresql_read_write.json 經過查詢postgresql數據,寫入postgresql 五、job_postgresql_to_postgresql_read_write_geom.json 經過查詢postgresql數據,包含地理空間geometry類型數據,寫入postgresql ## 數據包含geometry遷移 > DataX自己不知足遷移地理空間geometry類型數據遷移 * geometry類型數據遷移請移步 [geometry](https://t.zsxq.com/7MFqJIm) * 在idea的Teminal執行如下腳本 ~~~ D:\pm\DataX\datax-core\target\datax\bin>python datax.py ../job/job.json -m standalone cd D:\pm\DataX\ python D:\pm\DataX\datax-core\target\datax\bin\datax.py D:\pm\DataX\datax-core\target\datax\job\job_pg_to_pg_xianzhuangjianzhu_geom_read_write.json -m standalone ~~~ ## linux環境python 安裝 ### 下載 wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz ### 安裝依賴 ~~~ shell yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y ~~~ ### 解壓 ~~~ shell tar -zxvf Python-3.8.0.tgz ~~~ ### 切換目錄 ~~~ cd Python-3.8.0 ~~~ ### 編譯安裝 ~~~ 1.釋放編譯文件makefile,這makefile就是用來編譯且安裝的 ./configure --prefix=/usr/local/soft/python380/ 註釋:--prefix 指定軟件的安裝路徑 2.開始編譯  make 3.編譯且安裝 make install ~~~ ### 配置環境變量 ~~~ 1.vi /etc/profile 2.寫在最後 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/soft/python380/bin 保存退出 :wq! 3.生效 source /etc/profile ~~~ ### 若有必要更新pip ~~~ pip3 install --upgrade pip ~~~ ## window環境python 安裝 > python以及idea插件安裝請自行百度 ## JDK1.8安裝 ~~~ yum install java-1.8.0-openjdk\* -y ~~~ ## DataX 使用 ### 方法一 > 下載 http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz > cd {YOUR_DATAX_HOME}/bin python datax.py {YOUR_JOB.json} > 自檢腳本: python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_DATAX_HOME}/job/job.json ### 方法二 > 下載DataX源碼,本身編譯 * (1)、下載DataX源碼: > git clone git@github.com:alibaba/DataX.git * 經過maven打包: > $ cd {DataX_source_code_home} $ mvn -U clean package assembly:assembly -Dmaven.test.skip=true 打包成功後的DataX包位於 {DataX_source_code_home}/target/datax/datax/ * 第二步:啓動DataX > $ cd {YOUR_DATAX_DIR_BIN} $ python datax.py ./stream2stream.json ## 問題 ### 字段類型問題 > postgresql "geom" "public"."geometry" 由於DataX 不支持數據庫讀取這種字段類型. 字段名:[geom], 字段名稱:[1111], 字段Java類型:[java.lang.Object]. 請嘗試使用數據庫函數將其轉換datax支持的類型 或者不一樣步該字段 由於DataX 不支持數據庫寫入這種字段類型. 字段名:[geom], 字段類型:[1111], 字段Java類型:[geometry]. 請修改表中該字段的類型或者不一樣步該字段 > 您的配置文件中的列配置信息有誤. 由於DataX 不支持數據庫讀取這種字段類型. 字段名:[%s], 字段名稱:[%s], 字段Java類型:[%s]. 請嘗試使用數據庫函數將其轉換datax支持的類型 或者不一樣步該字段 . * geometry類型數據遷移請移步 [geometry](https://t.zsxq.com/7MFqJIm) ##效果對比 * 經過DataX本地運行,遷移postgresql 包含geometry空間類型數據1088270條,用時1111s 通道數量 : 8 任務啓動時刻 : 2019-12-09 12:52:02 任務結束時刻 : 2019-12-09 13:10:34 任務總計耗時 : 1111s 任務平均流量 : 517.35KB/s 記錄寫入速度 : 980rec/s 讀出記錄總數 : 1088270 讀寫失敗總數 : 0 * 經過Navacat複製數據表,遷移postgresql 包含geometry空間類型數據1088270條,用時1917.623s ## geometry類型數據遷移 * geometry類型數據遷移請移步 [geometry](https://t.zsxq.com/7MFqJIm) ![geometry](https://img2018.cnblogs.com/blog/371047/201912/371047-20191209152817831-1477643829.webp) > 本文由做者pm1280415703:JAVA實驗手冊 發佈,交流羣:583284584!
相關文章
相關標籤/搜索