DataX之Hive写入MySQL的NULL值处理

1、Hive建表

CREATE TABLE `rcdn_ads.ads_rcdn_zc_xq`(
  `qybm` varchar(25) COMMENT '区域编码', 
  `csbm` varchar(25) COMMENT '城市编码', 
  `shengbm` varchar(25) COMMENT '省份编码', 
  `cybm` varchar(25) COMMENT '产业编码', 
  `zclxbm` varchar(25) COMMENT '政策类型编码', 
  `zcztbm` varchar(25) COMMENT '政策状态编码', 
  `zcjbbm` varchar(25) COMMENT '政策级别编码', 
  `zcszbm` varchar(25) COMMENT '政策受众编码', 
  `qylxbm` varchar(25) COMMENT '企业类型编码', 
  `zcbt` varchar(255) COMMENT '政策标题', 
  `zcnr` string COMMENT '政策内容', 
  `zclj` varchar(255) COMMENT '政策链接', 
  `fwbmmc` varchar(100) COMMENT '发文部门名称', 
  `tjrq` date COMMENT '统计日期', 
  `sjly` varchar(255) COMMENT '数据来源')
COMMENT '政策详情表'
row format delimited fields terminated by '|' NULL DEFINED AS '' stored as textfile;

2、DataX脚本

{
	"job": {
		"setting": {
			"speed": {
				"channel": 3
			}
		},
		"content": [
			{
				"reader": {
					"name": "hdfsreader",
					"parameter": {
						"column": [
							{
								"index": 0,
								"type": "STRING"
							},
							{
								"index": 1,
								"type": "STRING"
							},
							{
								"index": 2,
								"type": "STRING"
							},
							{
								"index": 3,
								"type": "STRING"
							},
							{
								"index": 4,
								"type": "STRING"
							},
							{
								"index": 5,
								"type": "STRING"
							},
							{
								"index": 6,
								"type": "STRING"
							},
							{
								"index": 7,
								"type": "STRING"
							},
							{
								"index": 8,
								"type": "STRING"
							},
							{
								"index": 9,
								"type": "STRING"
							},
							{
								"index": 10,
								"type": "STRING"
							},
							{
								"index": 11,
								"type": "STRING"
							},
							{
								"index": 12,
								"type": "STRING"
							},
							{
								"index": 13,
								"type": "DATE"
							},
							{
								"index": 14,
								"type": "STRING"
							}
						],
						"defaultFS": "hdfs://hadoop01:8020",
						"encoding": "UTF-8",
						"fieldDelimiter": "|",
						"fileType": "text",
						"nullFormat": "",
						"path": "/user/hive/warehouse/rcdn_ads.db/ads_rcdn_zc_xq/*"
					}
				},
				"writer": {
					"name": "mysqlwriter",
					"parameter": {
						"column": [
							"qybm",
							"csbm",
							"shengbm",
							"cybm",
							"zclxbm",
							"zcztbm",
							"zcjbbm",
							"zcszbm",
							"qylxbm",
							"zcbt",
							"zcnr",
							"zclj",
							"fwbmmc",
							"tjrq",
							"sjly"
						],
						"connection": [
							{
								"jdbcUrl": "jdbc:mysql://node01:13306/talent_brain?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8",
								"table": [
									"t_zc_xq"
								]
							}
						],
						"password": "123456",
						"preSql": [
							"truncate table talent_brain.t_zc_xq"
						],
						"username": "root",
						"writeMode": "insert"
					}
				}
			}
		]
	}
}
DataX是一个阿里开源的数据同步工具,可以用于高效、稳定地将数据从Hive等数据源迁移到ClickHouse这样的目标系统。从Hive到ClickHouse的数据迁移通常涉及以下几个步骤: 1. **配置DataX**: 首先需要在DataX的配置文件中指定源端为Hive,目标端为ClickHouse。确保提供正确的Hive连接信息(如主机名、端口、用户名、密码以及Hive表名称),同时设置ClickHouse的相关连接参数。 ```yaml datax: job: name: "Hive to ClickHouse" read: hive: url: "jdbc:hive2://<host>:<port>" username: "<username>" password: "<password>" tables: ["<table_name>"] write: clickhouse: host: "<clickhouse_host>" port: <clickhouse_port> user: "<clickhouse_user>" password: "<clickhouse_password>" ``` 2. **数据映射**: DataX支持按列选择模式,可以根据需要选择Hive表中的特定列导出到ClickHouse,因为ClickHouse的数据模型可能与Hive不同。 3. **数据清洗和转换**: 如果有需要,可以在DataX的任务中添加预处理逻辑(比如数据清洗、转换),以满足ClickHouse的要求。 4. **执行任务**: 使用DataX命令行工具(`bin/datax.sh`)或者通过调度系统(如Airflow或Dockerfile)启动数据同步任务。 **注意事项**: - 数据类型映射:确保字段类型在两个数据库间是一致的,例如日期时间格式、数字类型等。 - 特殊处理:对于ClickHouse特有的特性,如分区、列存等,可能需要特殊处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值