首页 > 代码库 > DataX实现HDFS与MySQL之间数据同步

DataX实现HDFS与MySQL之间数据同步

         本案例仅适用于HDFS与MySQL之间的数据同步实现。

1、  在编译安装之前注意将release下面的setSharePath方法中的路径改为你自己的安装路径,笔者的为/home/woody/datax/libs.

2、  rpm打包之前,要修改*.spec文件中的路径,dataxpath,此外可能还需要注解掉部分赋值文件的代码,如cp  –r ${OLDPWD}****.properties ****.conf,在engine.spec中的jar包复制语句也要注解掉。

3、  注意将hdfsreader/writer(这两个文件的路径也是需要改的)中复制hadoop-core.Jar包的语句中的该jar包改为你自己的hadoop版本的hadoop-core.jar包。

4、  Mysqlreader/writer只需要修改路径就可以。

5、  接下来主要涉及到field\line by一致性的问题:

我们按正常顺序来搞一下:

首先将mysql数据同步到hdfs,需要用到mysqlreader 和hdfswriter

Mysqlreader文件不需要修改

Hdfswriter文件中的field_spilt=’\u0001’

                                       Line_spilt=’\n’,别的地方不需要确认,只需要确认这两个地方。

然后将hdfs数据同步到mysql,需要用到hdfsreader和mysqlwriter

Hdfsreader文件中field_spilt=’\t’,该项确认即可

Mysqlwriter文件中sep=’\001’(注意该项保持不变即可)

                    String sql=”LOAD DATA LOCAL INFILE ‘hdfs://localhost:9000/test_in/part’ ”

                    Sql+=String.format(“DIELDS  TERMINATED BY ‘\u0001’ESCAPED BY ‘\\’ ”)

                    Sql+=String.format(“LINES  TERMINATED  BY  ‘\n’”)

此外还要注意,mysqlwriterinputstreamadapter.java文件中的sep=’\u0001’

                    BREAK = ‘\n’行分隔符,NULL=’\\N’ (NULL字面字符)这两项也值得注意。

以上东西确认完成之后就可以打包编译安装了。

 

接下来可以开始从mysql同步数据到hdfs了,要配置jobs下面mysqlreader_to_hdfswriter.xml文件:

         ip\port\dbname\username\password\table这些都自己配置,where value=http://www.mamicode.com/”1=1”;

sql value=http://www.mamicode.com/”select * from test_datax” ; columns value=”*”这三项确认下即可,

         hadoop.job.ugivalue=http://www.mamicode.com/”woody,supergroup” ; hadoop_conf的值写你自己的hadoop core-site.xml文件路径即可,dir value=”hdfs://localhost:9000/test_in” ;field_spilt value=”/u0001” ; line_spilt value=”/n” ; nullchar value = “/N” 这些项目确认即可。

然后就可以执行数据同步命令了。

接下来可以开始从hdfs同步数据到mysql了,要配置jobs下面hdfsreader_to_mysqlwriter.xml文件:

         Hadoop.job.ugi\hadoop_conf\dir\field_spilt与以上相同即可,nullstring value=http://www.mamicode.com/”/N” ;>

col_filter一项注释掉。

         ip\port\dbname\username\password\table这些与以上相同即可,pre value=http://www.mamicode.com/”select * from test_datax” ; post value=”select * fromtest_datax” ; colorder value=”user_id,user_name” ;>

set value=http://www.mamicode.com/”user_id=user_id,user_name=user_name”

然后就可以执行数据同步命令了。

 

 

DataX实现HDFS与MySQL之间数据同步