2.为什么使用Datax不使用Sqoop?
在工作中,有这么一个需求:从mysql中向Hbase中导入数据,其中Hbase的Rowkey由Mysql库中第一个字段A与第二个地段B通过下划线拼接而成,即:Rowkey=A_B.
而使用Sqoop导入数据只能指定一个字段(目前探索是这样,如果有误请大家指教),而Datax则提供了相关配置,可以根据数据源表字段设计Hbase的Rowkey字段,因此方便了很多。
再者,Datax安装方便,所有配置均通过Json文件进行配置,十分方便,而且清晰。
3.Json文件配置
Datax安装请看阅读原文,非常简单,因为所有的配置都在JSon文件中,这里我将自己的配置文件信息贴出,相关字段介绍同样请看阅读原文(更详细)。
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [],
"connection": [
{
"jdbcUrl": ["jdbc:mysql://:/db_name"],
"querySql": ["sql语句"],
}
],
"password": "密码",
"username": "用户名"
}
},
"writer": {
"name": "hbase11xwriter",
"parameter": {
"hbaseConfig": {
"hbase.rootdir": "hdfs://xxxx:8020/hbase",
"hbase.cluster.distributed": "true",
"hbase.zookeeper.quorum": "zookeeper节点名称,不必写端口号"
},
"table": "hbase表名",
"mode": "normal",
"rowkeyColumn": [
{
"index":2,
"type":"string"
},
{
"index":-1,
"type":"string",
"value":"_"
},
{
"index":0,
"type":"string"
}
],
"column": [
{
"index":0,
"name": "列族:列名",
"type": "string"
},
{
"index":1,
"name": "列族:列名",
"type": "string"
},
{
"index":2,
"name": "列族:列名",
"type": "string"
}
],
"versionColumn":{
"index": -1,
"value":"123456789"
},
"encoding": "utf-8"
}
}
}
],
"setting": {
"speed": {
"channel":20(并发数)
}
}
}
}
上面JSon文件中说明几点:
a. index 对应 mysql 表字段,0代表第一个字段
b. sql 语句中查出多少字段,Column 节点就要指定多少个name节点
c. hbase 1.1 之后版本 writer name 要指定为: hbase11xwriter
d. Json 文件中红色部分需要变更为自己的环境配置
如有任何疑问或是错误可直接加我微信一起探讨:3254402856,感谢!