chunjun(flinkx) 数据同步工具浅尝

chunjun 是一款基于flink的数据同步工具,支持多种数据源的source和sink。有四种方式,local方式、standalone、yarn session、yarn pre-job 。

详情官网链接:QuickStart | ChunJun 纯钧

       由于flinkx更改了名字和打包脚本,但是官网文档并没有全部更新完整,阅读起来会有点困难;这里简单整理下,方便以后使用。

     推荐官网的阅读顺序:

     1. QuickStart | ChunJun 纯钧  本章节为快速入门,介绍了四种提交任务的方式,但命令是过时的不能用;

     2. ChunJun 通用配置详解 | ChunJun 纯钧  

     3. Connectors 本章节为各种存储介质的source和 sink 

下载和安装

       官网有编译好的工具包,可以直接使用 :Releases · DTStack/chunjun · GitHub

     该压缩包解压后包含4个目录,config目录是我单独创建的:

     

bin 目录:相比旧版的flinkx 封装了各个类型的脚本;下面这种方式可以放弃:

sh ./bin/flinkx -mode yarn-per-job -jobType sync -job $CHUNJUN_DIST/flinkx-examples/json/stream/stream.json -flinkxDistDir $CHUNJUN_DIST/flinkx-dist -flinkConfDir $FLINK_CONF_DIR -hadoopConfDir $HADOOP_CONF_DIR -flinkLibDir $FLINK_HOME/lib -jobName chunjun-pre-job

比如我想执行mysql 同步到hdfs;只需要增加一个 -job 参数即可,同理如果想执行其他提交方式,选择对应的脚本即可:

命令为:

sh bin/chunjun-local.sh -job config/mysql_hdfs_polling.json

执行该命令可能会出现取不到环境变量的问题,只需要手动添加到 bin/submit.sh,如下为手动添加的flink_home 和hadoop_home。

例如:

mysql 到hdfs 同步数据

采用的json 方式的配置文件为:

{
    "job":{
        "content":[
            {
                "reader":{
                    "name":"mysqlreader",
                    "parameter":{
                        "column":[
                            {
                                "name":"group_id",
                                "type":"varchar"
                            },
                            {
                                "name":"company_id",
                                "type":"varchar"
                            },
                            {
                                "name":"group_name",
                                "type":"varchar"
                            }
                        ],
                        "username":"root",
                        "password":"123456",
                        "queryTimeOut":2000,
                        "connection":[
                            {
                                "jdbcUrl":[
                                    "jdbc:mysql://192.168.33.23:5580/sobot_db?characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false"
                                ],
                                "table":[
                                    "cus_group_info"
                                ]
                            }
                        ],
                        "polling":false,
                        "pollingInterval":3000
                    }
                },
                "writer":{
                    "name":"hdfswriter",
                    "parameter":{
                        "fileType":"text",
                        "path":"hdfs://192.168.33.92:8020/data/zjcTmp/sobot_db/",
                        "defaultFS":"192.168.33.92:8020",
                        "fileName":"cus_group_info",
                        "fieldDelimiter":",",
                        "encoding":"utf-8",
                        "writeMode":"overwrite",
                        "column":[
                            {
                                "name":"group_id",
                                "type":"VARCHAR"
                            },
                            {
                                "name":"company_id",
                                "type":"VARCHAR"
                            },
                            {
                                "name":"group_name",
                                "type":"VARCHAR"
                            }
                        ]
                    }
                }
            }
        ],
        "setting":{
            "speed":{
                "readerChannel":1,
                "writerChannel":1
            }
        }
    }
}

开始执行命令:

sh bin/chunjun-local.sh -job config/mysql_hdfs_polling.json

执行成功返回:

 查看hdfs对应的目录,同步成功。

这些都是不同的数据格式,用于在不同的场景中存储和交换数据。下面是它们的区别和示例: 1. JSON(JavaScript Object Notation):是一种轻量级的数据交换格式,易于阅读和编写。它使用键值对的方式组织数据,并支持嵌套结构。JSON常用于Web应用程序中的数据传输和存储。 示例: ```json { "name": "John", "age": 30, "city": "New York" } ``` 2. OGG-JSON:是一种嵌套的JSON格式,常用于存储音频文件的元数据信息。 示例: ```json { "title": "Song Title", "artist": "Artist Name", "duration": 180, "album": { "title": "Album Title", "year": 2021 } } ``` 3. Chunjun-JSON:这可能是一个自定义的或特定领域的JSON格式,没有明确的定义或广泛使用。 示例: ```json { "property1": "value1", "property2": "value2" } ``` 4. CSV(Comma-Separated Values):是一种纯文本格式,用逗号分隔字段。它通常用于存储表格数据,每行表示一个记录,每列表示一个字段。 示例: ``` name, age, city John, 30, New York Alice, 25, London ``` 5. Avro:是一种二进制数据序列化格式,用于高效地存储和传输大数据集。它定义了数据的结构和架构,并支持动态类型和架构演化。 示例: ```json { "type": "record", "name": "Person", "fields": [ {"name": "name", "type": "string"}, {"name": "age", "type": "int"}, {"name": "city", "type": "string"} ] } ``` 这些数据格式在不同的场景中有各自的优势和适用性。选择合适的格式取决于数据的结构、用途以及所使用的技术栈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值