datax将数据表从hdfs同步到虚拟机mysql
前期准备:
开集群:zkServer.sh start(master\slave1\slave2都要开)
start-all.sh
权限问题:把hdfs里边要传输的数据的文件的路径(/user/logs/weblogs/cleaned_data(我的))都搞成Hadoop权限,然后后边.json文件的路径(/opt/module/flume/job(我的))的权限也都改一下也改成Hadoop。(这个是针对我的文件来说的)。
数据存在的问题,确保数据应该在的地方,都在!
开始干!:(我的以age表为例)
在/opt/module/datax/job/下边touch age.json,再vim age.json。
json配置文件内容:
{
"job": {
"content": [
{
"reader": {
"name": "hdfsreader",
"parameter": {
"column": [
{
"index": 0,
"type": "string"
},
{
"index": 1,
"type": "double"
},
{
"index": 2,
"type": "double"
},
{
"index": 3,
"type": "double"
}
],
"defaultFS": "hdfs://slave1:9000",//你active所在位置。
"encoding": "UTF-8",
"fieldDelimiter": ",",
"fileType": "csv",//你文件的形式
"path": "/user/logs/weblogs/cleaned_data",//hdfs里边的数据位置
"skipHeader": true
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"batchSize": 1000,
"column": [
"age_group",
"avg_sleep_duration",
"avg_systolic_bp",
"avg_heart_rate"
],
"connection": [
{
"jdbcUrl": "jdbc:mysql://localhost:3306/sleep",//虚拟机里边的sleep数据库
"table": [
"age"
]
}
],
"password": "1525",//你的密码
"preSql": [
"TRUNCATE TABLE age"
],
"username": "root",
"writeMode": "insert"
}
}
}
],
"setting": {
"errorLimit": {
"percentage": "0.01",
"record": "0"
},
"speed": {
"byte": "104857600",
"channel": "3"
}
}
}
}
(注:这个文件里边涉及到的//注释在那个json文件里边都得删除。)
查看配置文件里边是否有内容错误代码: python -m json.tool /opt/module/datax/job/age.json
运行配置文件代码:python /opt/module/datax/bin/datax.py /opt/module/datax/job/age.json
最后成功的界面:

更多推荐


所有评论(0)