異構數據源導redis不用找了!DataX二次開發插件rediswriter已上菜

rediswriter代碼地址: https://github.com/lijufeng2016/DataX-redis-writer

合併後DataX完整代碼地址: https://github.com/lijufeng2016/DataX

一、DataX介紹

DataX 是阿里巴巴集團內被廣泛使用的離線數據同步工具/平臺,實現包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各種異構數據源之間高效的數據同步功能。

二、redis writer插件介紹

  • 基本功能

    datax插件試的開發模式提供了很大遍歷,DataX內部把所有數據都抽象成Record,各個插件只需要按照規範即可。經過一週時間的開發和測試,本插件支持各種異構數據源MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase…導入redis。考慮到性能,本插件做了pipline批量寫redis。

    rediswriter支持的功能有:

    • 導入數據到redis(默認)

    • 根據數據源刪除redis key

    • 根據數據源刪除hash類型的field

    rediswriter支持導入redis的數據類型有:

    • string

    • list

    • hash

  • 參數說明

    以下參數爲datax自定義的json文件的parameter key下面的的參數

    一級參數 二級參數 三級參數 釋義
    redisMode redis的部署模式,支持集羣模式和單機模式,值:cluster或singleton 必需
    address redis的地址,單機模式:host:port,集羣模式:host1:port1,host2:port2, 必需
    auth redis密碼,沒有則不加這個參數 非必需,有則填
    writeType 寫入redis的數據類型:string、list、hash 必需
    writeMode 寫入的模式,默認是寫數據,設爲delete是刪數據 非必需可選,默認insert
    config 以下二級參數的具體配置,配置三種redis數據類型 必需
    strKey (公共參數)自定義的redis key值,不通過數據源來定 非必需,strKey和colKey二選一
    colKey (公共參數)對應數據源的column,作爲redis的key 非必需,strKey和colKey二選一
    expire (公共參數)redis key的過期時間,單位秒 非必需
    batchSize (公共參數)pipline批量每次導入redis的的大小 非必需
    keyPrefix (公共參數)redis key值的自定義前綴 非必需
    keySuffix (公共參數)redis key值的自定義後綴 非必需
    colValue (公共參數)redis value值對應的數據源列配置 除writeMode爲delete時必需
    name (公共參數)對應的數據源列名 必需
    index (公共參數)對應的數據源列索引 必需
    valueDelimiter (redis list類型參數)對應數據源column值的分隔符,只支持string類型的數據源column writeType爲list時必需
    pushType (redis list類型參數)list類型的push類型,有lpush,rpush,overwrite,默認overwrite 非必需,可選
    hashFields (redis hash類型參數)hash類型要刪除的field,逗號隔開,次參數只對刪除hash類型的field時有效 刪除hash類型field時必需
  • 安裝說明

    安裝時不能單獨只編譯單獨的插件代碼,必需把合併rediswriter後的完整DataX代碼編譯打包,必需要用本人fork併合並後的DataX代碼纔有用。如果已經安裝過DataX,需要覆蓋安裝

    (1)下載源碼

    #下載代碼,本地沒裝git的可以https://github.com/lijufeng2016/DataX 直接下載
    $ git clone [email protected]:lijufeng2016/DataX.git
    

    (2)maven打包

    $ cd  {DataX_source_code_home}
    $ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
    

    打包成功後的DataX包位於 {DataX_source_code_home}/target/datax/datax/ ,結構如下:

    $ cd  {DataX_source_code_home}
    $ ls ./target/datax/datax/
    bin		conf		job		lib		log		log_perf	plugin		script		tmp
    

    注意需要配置datax的環境變量$DATAX_HOME,並且賦予datax.py的可執行權限

    $ chmod 777 $DATAX_HOME/bin/datax.py
    

    進入$DATA_HOME/plugin/writer查看,rediswriter插件目錄已存在

    在這裏插入圖片描述

三、使用案例

代碼結構

在這裏插入圖片描述

案例代碼均在源代碼地址可以找到:https://github.com/lijufeng2016/DataX-redis-writer/tree/master/src/test/demo。下面以hive表導redis爲例

在src/test/demo/data路徑下找到建表語句和數據,執行上傳數據後,hive表如下:

在這裏插入圖片描述

json文件地址:https://github.com/lijufeng2016/DataX-redis-writer/blob/master/src/test/demo/

  • 導入string類型:

    執行datax.py hive_to_redis_string.json 後,通過redis客戶端查看

在這裏插入圖片描述

  • 導入list類型

    執行datax.py hive_to_redis_list.json 後,通過redis客戶端查看

    在這裏插入圖片描述

  • 導入hash類型

執行datax.py hive_to_redis_hash.json 後,通過redis客戶端查看

在這裏插入圖片描述

刪除redis的操作不再贅述,可自己根據demo代碼去測試。

redis的這三種數據類型導入已經夠用,不用再去單獨寫udf,只要datax支持的reader,有了它之後,都能寫redis!最後,歡迎star本項目:https://github.com/lijufeng2016/DataX-redis-writer

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章