【DataX实战】DataX同步ClickHouse数据到Hive

1.准备数据

1.1 clickhouse建表并插入数据

CREATE TABLE cell_towers_10
(
    radio Enum8('' = 0, 'CDMA' = 1, 'GSM' = 2, 'LTE' = 3, 'NR' = 4, 'UMTS' = 5),
    mcc UInt16,
    net UInt16,
    area UInt16,
    cell UInt64,
    unit Int16,
    lon Float64,
    lat Float64,
    range UInt32,
    samples UInt32,
    changeable UInt8,
    created DateTime,
    updated DateTime,
    averageSignal UInt8
)
ENGINE = MergeTree ORDER BY (radio, mcc, net, created);
INSERT INTO datasets.cell_towers_10 (radio,mcc,net,area,cell,unit,lon,lat,`range`,samples,changeable,created,updated,averageSignal) VALUES
	 ('CDMA',302,86,130,4113,-1,-112.069237,48.978268,1000,1,1,'2017-09-15 10:09:44','2017-09-15 10:10:44',0),
	 ('CDMA',302,86,130,0,-1,-112.069237,48.978268,1000,1,1,'2017-09-15 10:09:45','2017-09-15 10:10:45',0),
	 ('CDMA',302,86,130,4114,-1,-112.069237,48.978268,1000,1,1,'2017-09-15 10:09:46','2017-09-15 10:10:46',0),
	 ('CDMA',302,1168,15002,59995,-1,-79.462952,44.009564,1000,7,1,'2017-09-14 19:22:48','2017-09-14 19:30:04',0),
	 ('CDMA',302,1168,15002,59506,-1,-79.522812,43.79319,1000,1,1,'2017-09-14 19:57:04','2017-09-14 20:33:33',0),
	 ('CDMA',302,1168,15004,60815,-1,-79.315284,43.838686,1000,7,1,'2017-09-14 20:22:45','2017-09-14 21:06:28',0),
	 ('CDMA',302,1168,15002,59507,-1,-79.459198,43.797741,1000,3,1,'2017-09-14 20:38:37','2017-09-14 21:20:47',0),
	 ('CDMA',302,1168,15002,59946,-1,-79.462547,44.01469,1000,1,1,'2017-09-14 22:19:45','2017-09-14 22:56:46',0),
	 ('CDMA',302,1168,16000,14113,-1,-80.480919,43.435841,1000,1,1,'2017-09-14 22:53:59','2017-09-15 00:22:24',0),
	 ('CDMA',302,1168,15004,60516,-1,-79.37619,43.84483,1000,2,1,'2017-09-14 23:11:07','2017-09-15 00:57:57',0);

1.2 hive中建表

CREATE TABLE ck_cell_towers_10
(
radio string,
mcc smallint,
net smallint,
area int,
cell bigint,
unit smallint,
lon double,
lat double,
range_a int,
samples int,
changeable tinyint,
created date,
updated date,
averageSignal tinyint
)row format delimited fields terminated by ",";

2. 准备工作

由于Datax没有clickhousereader组件,用rdbmsreader替代。

需要把clickhousewriter/libs下的所有jar包复制到rdbmsreader/libs下,同名jar包直接替换,另外,删掉rm -f guava-r05.jar这个包,否则会报错。

修改plugin.json文件:在"driver" 增加 "ru.yandex.clickhouse.ClickHouseDriver"。

编辑json文件时,name改为rdbmsreader。

"name": "rdbmsreader" 

3. 创建任务

可以在datax-web中创建任务生成json,也可以直接编辑json

{
  "job": {
    "setting": {
      "speed": {
        "channel": 3
      },
      "errorLimit": {
        "record": 0,
        "percentage": 0.02
      }
    },
    "content": [
      {
        "reader": {
          "name": "rdbmsreader",
          "parameter": {
            "username": "yRjwDFuoPKlqya9h9H2Amg==",
            "password": "yRjwDFuoPKlqya9h9H2Amg==",
            "column": [
              "radio",
              "mcc",
              "net",
              "area",
              "cell",
              "unit",
              "lon",
              "lat",
              "range",
              "samples",
              "changeable",
              "created",
              "updated",
              "averageSignal"
            ],
            "splitPk": "",
            "connection": [
              {
                "table": [
                  "cell_towers"
                ],
                "jdbcUrl": [
                  "jdbc:clickhouse://10.16.60.44:8123/datasets"
                ]
              }
            ]
          }
        },
        "writer": {
          "name": "hdfswriter",
          "parameter": {
            "defaultFS": "hdfs://10.16.60.31:8020",
            "fileType": "text",
            "path": "/user/hive/warehouse/datasets.db/ck_cell_towers",
            "fileName": "ck_cell_towers",
            "writeMode": "append",
            "fieldDelimiter": ",",
            "column": [
              {
                "name": "radio",
                "type": "string"
              },
              {
                "name": "mcc",
                "type": "smallint"
              },
              {
                "name": "net",
                "type": "smallint"
              },
              {
                "name": "area",
                "type": "int"
              },
              {
                "name": "cell",
                "type": "bigint"
              },
              {
                "name": "unit",
                "type": "smallint"
              },
              {
                "name": "lon",
                "type": "double"
              },
              {
                "name": "lat",
                "type": "double"
              },
              {
                "name": "range_a",
                "type": "int"
              },
              {
                "name": "samples",
                "type": "int"
              },
              {
                "name": "changeable",
                "type": "tinyint"
              },
              {
                "name": "created",
                "type": "date"
              },
              {
                "name": "updated",
                "type": "date"
              },
              {
                "name": "averagesignal",
                "type": "tinyint"
              }
            ]
          }
        }
      }
    ]
  }
}

4. 执行结果

fe6660d5abad4a41b059b54600e1cf84.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当使用DataX数据Hive导出到MySQL时,可能会出现数据丢失的情况。出现数据丢失的原因可能有以下几种: 1. 数据源问题:首先,需要检查Hive中的数据是否完整,是否包含了所有需要导出的数据。可以通过查询Hive表来确认数据的完整性。 2. 数据过滤问题:在DataX的配置中,可能会对数据进行了过滤操作,例如使用了查询条件、选择了特定列等。如果过滤条件设置不正确,可能会导致一部分数据被漏掉。 3. 数据类型不匹配:Hive和MySQL有着不同的数据类型,在数据导出过程中,可能会发生类型转换导致数据丢失的问题。在配置DataX时,需要确保Hive和MySQL的数据类型匹配,以避免数据丢失。 4. 数据写入问题:在将数据Hive导入到MySQL的过程中,可能会发生写入错误或网络中断等问题,导致数据丢失。在这种情况下,需要检查DataX的日志或MySQL的错误日志,以确定是否有异常情况发生。 为了解决数据丢失的问题,可以采以下措施: 1. 检查数据源和目标数据库的数据完整性,确保数据源的数据没有问题。 2. 检查DataX的配置文件,确认过滤条件和数据类型匹配条件是否正确设置。 3. 对于数据量较大的导出任务,可以考虑分批导出,以降低出现问题的风险。 4. 在导出过程中,定期备份数据,并且在数据导出完成后进行数据校验,确保目标数据库中的数据和源数据一致。 总之,数据丢失问题可能是由于数据源、配置、数据类型或写入问题引起的。通过对数据源和配置进行仔细检查,以及采一些预防措施,可以减少数据丢失的可能性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shangjg3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值