datax 导数据,从 mysql 到 phoenix

一、模板
从 mysql 到 phoenix,调用的hbase11xsqlwriter

fact_user_role.json

{
"job": {
    "entry": {
        "jvm": "-Xms2048m -Xmx2048m"
    },
    "content": [
        {
            "reader": {
                "name": "mysqlreader",
                "parameter": {
                    "username": "bdquery",
                    "password": "*******",
                    "connection": [
                        {
                            "querySql": [
                                "select t_user_school_rel.id id,t_user_school_rel.user_id user_id,t_user_school_rel.school_id school_id,t_user_school_rel.role_type role_type,t_user_school_rel.sno sno,t_user_school_rel.create_time create_time from t_user_school_rel where create_time>'${lastTime}' and create_time<='${nowTime}';"
                            ],
                            "jdbcUrl": [
                                "jdbc:mysql://119.23.249.2:16044/testcore"
                            ]
                        }
                    ]
                }
            },
            "writer": {
                "name": "hbase11xsqlwriter",
                "parameter": {
                    "batchSize": "256",
                    "column": [
                        "ID",
                        "USERID",
                        "SCHOOLID",
                        "ROLETYPE",
                        "SNO",
                        "CREATETIME"
                    ],
                    "hbaseConfig": {
                        "hbase.zookeeper.quorum": "192.168.2.15",
                        "zookeeper.znode.parent": "/hbase"
                    },
                    "nullMode": "skip",
                    "table": "LOG_ANA:ROLE"
                }
            }
        }
    ],
    "setting": {
        "speed": {
            "channel": 5
        }
    }
}
}

二.编写注意事项
1、参照模板,编写reader内容,修改内容如下
datax 导数据,从 mysql 到 phoenix_第1张图片
编写writer内容,修改内容如下:
datax 导数据,从 mysql 到 phoenix_第2张图片
注意:
1、脚本的读取数据类型的顺序一定要和输出列的顺序保持一致,否则容易产生脏数据
2、读取列数据类型中 int 和 float 可能会导致脏数据,适当的使用 long 和 double类型替换
3、通常 hbase.phoenix 中的表名和列名都是大写,脚本中相对应的要注意大小写
脏数据的产生原因会有很多
4 输出到 hbase.phoenix表需要加上数据库,连接用 : eg: LOG_ANA:FLOW
5 写入的数据类型的顺序要和输出列相对应

三.命名规则
Eg:xxx_sss_fff.json
Xxx 表示系统名称,sss 表示数据库名称,fff 表示目标表名称
Json 脚本的名称需要和数据库表和输出表的名称相对应。

四.示例

{
   "job": {
    "entry": {
      "jvm": "-Xms2048m -Xmx2048m"
    },
     "content": [
       {
         "reader": {
           "name": "mysqlreader",
           "parameter": {
             "username": "bdquery",
             "password": "*******",
             "connection": [
               {
                 "querySql": [
                 "select t_user_school_rel.id id,t_user_school_rel.user_id user_id,t_user_school_rel.school_id school_id,t_user_school_rel.role_type role_type,t_user_school_rel.sno sno,t_user_school_rel.create_time create_time from t_user_school_rel where (create_time>${begindate} and create_time<=${enddate}) or (modfied_time>${begindate} and modfied_time<=${enddate});"
         --指定一个或多个时间类型字段,利用系统的两个变量(${begindate},${enddate})完成增量同步

                ],
                 "jdbcUrl": [
                   "jdbc:mysql://119.23.249.27:16044/testcore"
                 ]
               }
             ]
           }
         },
           
		"writer": {
	          "name": "hbase11xsqlwriter",
	          "parameter": {
	            "batchSize": "256",
	            "column": [
	              	  "ID",
				  "USERID",
				  "SCHOOLID",
				  "ROLETYPE",
				  "SNO",
				  "CREATETIME",			  
            ],
			"hbaseConfig": {
              "hbase.zookeeper.quorum": "目标hbase集群的ZK服务器地址",   
      --描述:hbase集群地址,zk为必填项,格式:ip1,ip2,ip3,	-		
       --注意,多个IP之间使用英文的逗号分隔。
          "zookeeper.znode.parent": "目标hbase集群的znode"     		
   				 --znode是可选的,默认是 /hbase  
            },
        "nullMode": "skip",    
   				--读取到的列值为null时,如何处理。目前有两种方式(默认是 	   	  				
   				  skip):
						--skip:跳过这一列,即不插入这一列(如果该行的这一列之前已经					  
						存在,则会被删除) empty:插入空值,值类型的空值是0,varchar					 
						 的空值是空字符串
									
	    "table": "目标hbase表名,大小注意区分"     
   				--大小写敏感,通常phoenix表都是大写表名
	          }
	        }
	      }
	    ],
	    "setting": {
	      "speed": {
	        "channel": 5
	      }
	    }
  }
}

你可能感兴趣的:(datax 导数据,从 mysql 到 phoenix)