[关闭]
@songlaf 2016-05-26 19:36 字数 2062 阅读 585

Sqoop的导入导出

北风网大数据培训


一)概述

Sqoop主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

二)安装配置Sqoop

  1. #修改/etc/profile,增加sqoop的环境变量
  2. export SQOOP_HOME=/opt/modules/sqoop-1.4.5-cdh5.3.6
  3. export PATH="$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$SQOOP_HOME/bin"
  4. #配置sqoop的配置文件sqoop-env.sh(复制文件sqoop-env-template.cmd)
  5. #Set path to where bin/hadoop is available
  6. #设置Hadoop的目录
  7. export HADOOP_COMMON_HOME=/opt/modules/hadoop-2.5.0-cdh5.3.6
  8. #Set path to where hadoop-*-core.jar is available
  9. #设置yarn的目录
  10. export HADOOP_MAPRED_HOME=/opt/modules/hadoop-2.5.0-cdh5.3.6
  11. #set the path to where bin/hbase is available
  12. #export HBASE_HOME=
  13. #Set the path to where bin/hive is available
  14. #设置hive的目录
  15. export HIVE_HOME=/opt/modules/apache-hive-0.13.1-bin
  16. #Set the path for where zookeper config dir is
  17. #设置zookeper的目录
  18. export ZOOCFGDIR=/opt/modules/zookeeper-3.4.5-cdh5.3.6/conf

三)Sqoop测试

  1. #列出Mysql的数据库
  2. bin/sqoop list-databases \
  3. --connect jdbc:mysql://njt.song.s0:3306/ \
  4. --username root \
  5. --password 123456

四)sqloop 导出到HDFS:

  1. sqoop import \
  2. --connect jdbc:mysql://njt.song.s0:3306/test \
  3. --username root \
  4. --password 123456 \
  5. --table my_user \
  6. --target-dir /output2/ \
  7. --fields-terminated-by ',' \
  8. -m 1
  1. #参数说明:
  2. -connect jdbc:mysql://ip:3306/sqoop ##告诉jdbc,连接mysql的url
  3. --username sqoop ##连接mysql的用户名
  4. --password sqoop ##连接mysql的密码
  5. --table test ##从mysql导出的表名称
  6. --fields-terminated-by '\t' ##指定输出文件中的行的字段分隔符
  7. -m 1 ##复制过程使用1个map作业
  1. #查看执行结果
  2. bin/hdfs dfs -cat /output2/part-m-00000

11111.png-27.4kB

五)RDMS导出到HIVE

  1. bin/sqoop import \
  2. --connect jdbc:mysql://njt.song.s0:3306/test \
  3. --username root \
  4. --password 123456 \
  5. --table my_user \
  6. --delete-target-dir \
  7. --hive-import \
  8. --hive-database db_test \
  9. --hive-table my_user_test \
  10. --fields-terminated-by ','
  1. 参数说明: Hive
  2. --hive-database Hive数据库
  3. --fields-terminated-by 字段分割
  4. --hive-table hive
  5. --as-parquetfile
  6. --compress
  7. --compresion-codec org.apache.hadoop.io.compress.DefaultCodec
  8. org.apache.hadoop.io.compress.SnappyCodec

执行结果
2222.png-45.3kB

六)HIVE导出到RDMS

hive到处到RDMS其实其实就是从HDFS导入到RDBMS
Hive表的数据如下:
OK
1,tom NULL
2,robi NULL
3,jack NULL
4,hua NULL

  1. bin/sqoop export \
  2. --connect jdbc:mysql://njt.song.s0:3306/test \
  3. --username root \
  4. --password 123456 \
  5. --table wu \
  6. --export-dir /user/hive/warehouse/db_test.db/wu/ \
  7. --input-fields-terminated-by ','

执行结果

3333.jpg-17.6kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注