Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

异构数据源导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下面的的参数

    一级参数二级参数三级参数释义
    redisModeredis的部署模式,支持集群模式和单机模式,值:cluster或singleton必需
    addressredis的地址,单机模式:host:port,集群模式:host1:port1,host2:port2,必需
    authredis密码,没有则不加这个参数非必需,有则填
    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类型的数据源columnwriteType为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 git@github.com: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

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 搞机器学习,Python 和 R 哪个更合适?

下一篇: 痛心!Pandownload开发者被抓!我终于决定使用Docker搭建一个多端同步网盘!

精华推荐