在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
通过datax将mysql数据导出到HDFS
注意:我的datax在mysql计算机上运行,hdfs在另一台计算机上运行;
1.mysql创建表并插入数据:
1.1?在测试数据库中创建表
创建表`tbtest`? (
?`ID`int(11)NOT NULL AUTO_INCREMENT,
?`name` varchar(255)字符集utf8 COLLUT utf8_general_ci NOT NULL,
?`Dep` int(11),
?主键(`id`)使用BTREE)
ENGINE = InnoDB AUTO_INCREMENT = 10000 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT =动态;
1.2插入数据
插入到tbtest值中(1,”张飞”,7);
插入tbtest VALUES(2,” Guan Yu”,7);
插入tbtest VALUES(3,”刘备”,7);
2.编辑并执行json文件
python/data/datax/datax/bin/datax.py-r mysqlreader-w hdfswriter?
您可以看到json文件格式;
2.1 json文件如下:
{
“工作”:{
“内容”:[
{
“阅读器”:{
” name”:” mysqlreader”,
“参数”:{
“列”:[
? ” id”,
“名称”,
? ” Dep”
],
“连接”:[
{
” jdbcUrl”:[
” jdbc:mysql://127.0.0.1:3306/test”
],
” table”:
,
“密码”:”测试* 123″,
” username”:” root”,
” where”:””
}
},
? “作家”:{
” name”:” hdfswriter”,
“参数”:{
“列”:[
{
” name”:” id”,
? ” type”:” int”
},
{
” name”:” name”,
键入”:” char”
},
{
” name”:” Dep”,
” type”:” int”
}
],
” compress”:” NONE”,
defaultFS”:” hdfs://hadoop的IP:9000″,
” fieldDelimiter”:” \\\\ t”,
” fileName”:” tbtest.txt”,
” fileType”:” orc”,
” path”:”/data/hadoop/h adoopdata”,
” writeMode”:”追加”
}}
}
?}
],
?”设置”:{
“速度”:{
” channel”:” 1″
}
}
}
}?
2.2?执行命令
?python/data/datax/datax/bin/datax.py/data/datax/mysqlhdfsjob.json
成功的技巧如下:
3.执行过程中发现的问题
问题1:JSON格式总是报告错误,并且解决方法:使用Sublime的PrettyJson进行调试非常方便。
问题2:java.net.ConnectException:连接被拒绝将报告错误。首先在网络级进行故障排除,有
netstat-nltp查看端口9000,屏幕截图如下:
当发现IP为127.0.0.1时,您需要更改hadoop的配置文件。
更改core-site.xml,
\ lt;配置;
\ lt;属性\>
? \ lt;名称\\ u> fs.default.name \ lt;/名称
? \ lt;值> hdfs://0.0.0.0:9000 \ lt;/值>? #将localhost更改为0.0.0.0或本地IP。
\ lt;/属性>
\ lt;/配置
4.有关json文件的详细信息,请参考官方说明
请参考mysqlreader文档:
? https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md
请参阅hdfswriter文档:
??? https://github.com/alibaba/DataX/blob/master/hdfswriter/doc/hdfswriter.md