1.3 DataX执行的json文件解析

{
    job:	//最外侧,任务
    	setting:{	//设置
    		speed:{	//速度
    			channel:3	//指定用几个子线程去跑这个任务,线程越多,速度越快
		content:{	//内容
    		reader:{	//读数据部分
    			name:"hdfsreader"	//指明什么类型的reader,hdfsreader读HDFS
    			parameter:{		//参数
    				path:"/user/xxx/dt=${dt}/dn=${dn}/*"	//要读取的HDFS上的数据库的路径
    				defaultFS:""	//HDFS地址,HA是hdfs://mycluster
    				hadoopConfig:{	//Hadoop的一些配置
    					"dfs.nameservices":"mycluster"	//HDFS集群名
    					"dfs.ha.namenode.mycluster":"nn1,nn2,nn3"	//HA的多个namenode
    					"dfs.namenode.rpc-address.mycluster.nn1":hadoop201:8020	//HDFSnamenode1的地址
    					"dfs.namenode.xxx.nn2"	//第二个namenode的地址
        				"dfs.namenode.xxx.nn3"	//第三个namenode的地址
						"dfs.client.failover.proxy.provider.nameservice1": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"	//HDFS的namenode的失败重试机制
    				column:[{index:0, type:String}, {value:${dn}, type:string}]	//每个列封装成一个json对象,读列通过下标索引读取数据块中的列;type是数据库中列对应的数据类型;外部传入的参数使用固定值value接收。
					fileType:"text"	//数据块文件类型,行式存储
					encoding:"UTF-8"	//数据块文件编码格式
					fieldDelimiter:"\t"		//数据块中字段的分隔符,和Hive建表的时候的分隔符一致
					
    		writer:{	//写数据部分
                name:"mysqlwriter"	//指明什么类型的writer,mysqlwriter写到MySQL
                parameter:{
                	writerMode:"insert"	//写入数据库的方式,insert、replace(主键冲突会替换)
                	username:"root"	//mysql的用户名
                	password:"123456"	//mysql的密码
                	column:[xxx,xxx]	//对应Hive表中的字段,顺序个数一致
					perSql:["delete from xxx where dt=${dt}"]	//当写入mysql50%失败了,下一次重新导入的时候,会执行这个sql,一般都是delete删除。
					connection:[{jdbcUrl:mysql的url, table:[表名]}]
}

真实例子:

{
	"job": {
		"setting": {
			"speed": {
				"channel": 3
			}
		},
		"content": [{
			"reader": {
				"name": "hdfsreader",
				"parameter": {
					"path": "/user/hive/warehouse/ads.db/ads_low3_userdetail/dt=${dt}/dn=${dn}/*",
					"defaultFS": "hdfs://mycluster",
					 "hadoopConfig":{
			          "dfs.nameservices": "mycluster",
			       	  "dfs.ha.namenodes.mycluster": "nn1,nn2,nn3",
				  "dfs.namenode.rpc-address.mycluster.nn1": "hadoop201:8020",
				  "dfs.namenode.rpc-address.mycluster.nn2": "hadoop202:8020",
				   "dfs.namenode.rpc-address.mycluster.nn3": "hadoop203:8020",
				  "dfs.client.failover.proxy.provider.mycluster": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"    
  },
					"column": [{
							"index": 0,
							"type": "string"
						},
						{
							"index": 1,
							"type": "string"
						},
						{
							"index": 2,
							"type": "string"
						},
						{
							"index": 3,
							"type": "string"
						},
						{
							"value": "${dt}",
							"type": "string"
						},
						{
							"value": "${dn}",
							"type": "string"
						}
					],
					"fileType": "text",
					"encoding": "UTF-8",
					"fieldDelimiter": "\t"
				}

			},
			"writer": {
				"name": "mysqlwriter",
				"parameter": {
					"writeMode": "insert",
					"username": "root",
					"password": "000000",
					"column": [
					        "paperviewid",
						"paperviewname",
						"score_segment",
						"userids",
						"dt",
						"dn"
					],
					"preSql": [
						"delete from paper_scoresegment_user where dt=${dt}"
					],
					"connection": [{
						"jdbcUrl": "jdbc:mysql://hadoop201:3306/qz_paper?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false",
						"table": [
							"paper_scoresegment_user"
						]
					}]
				}

			}
		}]
	}
}
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐