Sqoop 能够与Hive系统结合,实现数据的导入和导出,用户须要在 sqoop-env.sh 中添加HIVE_HOME的环境变量。html
具体,见个人以下博客:mysql
前期工做jquery
本博文的主要内容有sql
1、将mysql表的数据导入到hive中apache
2、将Hive表的数据导出到mysql中(不创建中间表)app
3、将Hive表的数据导出到mysql中(创建中间表)(推荐)ide
1、将mysql表的数据导入到hive中
# 追加数据oop
sqoop import \ --connect jdbc:mysql://192.168.56.104:3306/test?useSSL=false \ --username root \ --password 123456 \ --table t1 --hive-import --hive-table test.mysql_t1 \
# 覆盖数据post
sqoop import \ --connect jdbc:mysql://192.168.56.104:3306/test?useSSL=false \ --username root \ --password 123456 \ --table t1 \ --hive-import --hive-overwrite --hive-table test.mysql_t1 \
注:若是MySQL中的表没有主键,则须要加--autoreset-to-one-mapper参数ui
完善
2、将Hive表的数据导出到mysql中(不创建中间表)
以下,是个人Hive里的数据。
以/user/hive/warehouse/stock_partition/tradedate=20130722为例。
这里,Hive -> MySQL
我这里是,
/user/hive/warehouse/stock_partition(在Hive里)
->
stock_partition_copy(在MySQL里)
对于,将Hive里的数据,导出到MySQL(是须要先创建输出表的。在我这里是,stock_partition_copy)
代表,输出表已经建立成功!
[hadoop@djt002 sqoopRunCreate]$ sqoop export \ > --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' \ > --username hive \ > --password-file /user/hadoop/.password \ > --table stock_partition_copy \ > --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 \ > -input-fields-terminated-by ","
或
[hadoop@djt002 sqoopRunCreate]$ sqoop export --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' --username hive --password-file /user/hadoop/.password --table stock_partition_copy --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 -input-fields-terminated-by ","
而后,到本地的MySQL,来看
成功!
3、将Hive表的数据导出到mysql中(创建中间表,有效解决脏数据)
对于Hive,相似与HDFS同样,在从它们导出到本地的MySQL时,为了规范适应生产业务所需,仍是也最好先导出到中间表。
以下,是个人Hive里的数据
这里,Hive -> 先导出到 中间表(成功才能够,后续导出) -> MySQL
我这里是,
/user/hive/warehouse/stock_partition(在Hive里)
->
stock_partition _copy_tmp (在MySQL里)
->
stock_partition_copy(在MySQL里)
对于,将Hive里的数据,导出到MySQL(是须要先创建中间表和输出表的。在我这里是,stock_partition_copy)
对于,这里,由于,咱们只需复制旧表的结构就好,无需它里的数据,教你们快速获得想要的新表。
CREATE TABLE stock_partition_copy_tmp SELECT * FROM stock_partition_copy WHERE 1=2;
代表,中间表和输出表已经建立成功!
[hadoop@djt002 sqoopRunCreate]$ sqoop export \ > --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' \ > --username hive \ > --password-file /user/hadoop/.password \ > --table stock_partition_copy \ > --staging-table stock_partition_copy_tmp \ > --clear-staging-table \ > --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 \ > -input-fields-terminated-by ","
或者
[hadoop@djt002 sqoopRunCreate]$ sqoop export --connect 'jdbc:mysql://192.168.80.200/hive?useUnicode=true&characterEncoding=utf-8' --username hive --password-file /user/hadoop/.password --table stock_partition_copy --staging-table stock_partition_copy_tmp --clear-staging-table --export-dir /user/hive/warehouse/stock_partition/tradedate=20130722 -input-fields-terminated-by ","
而后,到本地的MySQL,来看
推荐博客
http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html (sqoop官网文档)
http://blog.csdn.net/aaronhadoop/article/details/26713431