sqoop实现Mysql、Oracle与hdfs之间数据的互导 – zhangwx的专栏 – 博客频道 – CSDN.NET

SQOOP的描述

SQOOP是用于对数据进行导入导出的。

    (1)MySQLOracle等数据库中的数据导入到HDFSHiveHBase

    (2)HDFSHiveHBase中的数据导出到MySQLOracle等数据库中

一、Mysql与HDFS互导数据

环境:

环境介绍:3台虚拟机安装centos6.464位、jdk1.7 64位、hadoop2.5.1 64位

192.168.0.108 m1

192.168.0.109 s1

192.168.0.110 s2

 

SQOOP的安装

解压缩sqoop的tar.gz文件设置环境变量(source /etc/profile)

 

把数据从mysql导入到hdfs(默认是/user/<username>)

1.   复制mysql的驱动到sqoop目录下的lib中

2.   执行导入命令

 

  sqoop import –connect jdbc:mysql://hadoop0:3306/hive  –username root –password admin –table TBLS –fields-terminated-by ‘\t’  –null-string ‘**’  -m 1 –append  –hive-import

 

 

说明:

ü  执行import命令将mysqlhive数据库中的TBLS表导入到hdfs中(默认目录user/root

ü 

–fields-terminated-by ‘\t’ :表示导入到hdfs中以’\t’进行切割

ü 

–null-string ‘**’:表示当字段为null时用’**’替换

ü 

-m1:表示只指定一个map任务(map任务的个数关系生成文件的个数)

ü 

–append:表示如果执行多次则进行追加(否则多次执行则会报already exsist

ü 

–hive-import:表示导入到hive中(如果只需导入到hdfs中则可不写)

ü 

 

 

  sqoop import –connect jdbc:mysql://hadoop0:3306/hive  –username root –password admin –table TBLS –fields-terminated-by ‘\t’  –null-string ‘**’  -m 1 –append  –hive-import  –check-column ‘TBL_ID’

–incremental append –last-value 6

 

说明:

ü  执行import命令将mysqlhive数据库中的TBLS表导入到hdfs中(默认目录user/root

ü 

–check-column ‘TBL_ID’:表示检查’TBL_ID‘

ü 

–incremental:表示增量

ü 

–last-value 6:表示开始追加导入的列从第6列开始(不包含第6)

ü 

–check-column ‘TBL_ID’ –incremental append –last-value 6:整体解释为检查导入的主键列‘TBL_ID’当该列的值(增量)大于6可以进行追加导入否则不进行导入

(这样做的目的:当第一次导入数据时主键列的最后一个值为6第二次导入时我们不想导入所有的数据而是后来增加的数据所以我们可以接着上一次的数据导入即不导入重复数据)

 

把数据从hdfs导出到mysql 

  sqoop export –connect jdbc:mysql://hadoop0:3306/hive  –username root –password admin –table ids –fields-terminated-by ‘\t’ –export-dir ‘/ids’

 

说明:

–export-dir ‘/ids’:指定要导出到Mysql的文件目录

 

设置为作业运行作业

  sqoop job –create myjob — import –connect jdbc:mysql://hadoop0:3306/hive  –username root –password admin –table TBLS –fields-terminated-by ‘\t’  –null-string ‘**’  -m 1 –append  –hive-import 

 

说明:

ü  设置为作业后可以直接执行作业执行作业即执行该命令

ü  执行作业的命令:sqoop job  –exec  myjob

ü  查看作业已创建的Job作业:sqoop job –list

 

注:运行作业第一次需要输入密码输入密码后即可执行然后修改sqoop/conf/sqoop-site.xml中的sqoop.metastore.client.record.password(去掉注释即可)

以后运行就不需要在此输入密码了

导入导出的事务是以Mapper任务为单位。

即一个Map任务一个事务

 

 案例:

连接测试

sqoop list-tables --connect jdbc:mysql://192.168.0.114:3306/test --username root --password zwx</p><p>

#sqoop实现数据从oracle导入hdfs(hbase)

sqoop import --append --connect jdbc:<b style="color:white;background-color:#880000">oracle</b>:thin:@192.168.0.20:1521:orcl --username yqdev --password yq --m 1 --table c_text --columns id<b style="color:white;background-color:#004699">,</b>url<b style="color:white;background-color:#004699">,</b>title<b style="color:white;background-color:#004699">,</b>publishtime<b style="color:white;background-color:#004699">,</b>copy --<b style="color:white;background-color:#990099">hbase</b>-create-table --<b style="color:white;background-color:#990099">hbase</b>-table c_text --<b style="color:white;background-color:#990099">hbase</b>-row-key id --column-family textinfo</p><p>

#mysql

sqoop import --append --connect jdbc:mysql://192.168.0.114:3306/test --username root --password zwx --m 1 --table c_text --columns id<b style="color:white;background-color:#004699">,</b>url<b style="color:white;background-color:#004699">,</b>title<b style="color:white;background-color:#004699">,</b>author --<b style="color:white;background-color:#990099">hbase</b>-create-table --<b style="color:white;background-color:#990099">hbase</b>-table c_text --<b style="color:white;background-color:#990099">hbase</b>-row-key id --column-family textinfo

来源URL:http://cache.baiducontent.com/c?m=9d78d513d9d430d94f9e9e697d1dc0126f4381137d948d483dc39238841528563761f4ca53356600c4c40c384aee0a02fdf04765377237b6eb95c8198ce5c53f2ff93042710bf13105d269f59d1264d620e14de9de0ee6caaa62c0ef85c4de2444ba23120987e78a2a1764cd78806526e2d68e39664864ccfa4012e82f013dd8631eb91dbfa6707906f2ebc00c129e7fc76166c6ee63ec2912c24ff359066c01ea4fba03512530e3483aac047b5fc3b50afa7c2e0670ed16f2a4c7b5e1488ed6ef32&p=9072cd0c88904ead08e2947d0e43c9&newp=c46fc54ad6c042e70be296204249a5231610db2151d4db1137&user=baidu&fm=sc&query=%CD%A8%B9%FDSqoop%CA%B5%CF%D6Mysql+/+Oracle+%D3%EBHDFS+/+Hbase%BB%A5%B5%BC%CA%FD%BE%DD&qid=87ca014400006f67&p1=2