异构数据源导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

猜你喜欢

转载自blog.csdn.net/u013289115/article/details/106277937