sqoop安装及其使用

sqoop简介

sqoop是连接关系型数据库和hadoop的桥梁,主要有两个方面(导入和导出):

  • 将关系型数据库的数据导入到Hadoop 及其相关的系统中,如 Hive和HBase

  • 将数据从Hadoop 系统里抽取并导出到关系型数据库

sqoop安装

sqoop下载地址:Index of /dist/sqoop

下载完成后把sqoop进行解压安装并配置,在添加sqoop到环境变量,并将数据库连接驱动拷贝到$SQOOP_HOME(sqoop安装目录)/lib里

sqoop使用

把MySQL中的数据导入到HDFS上
sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password 158758qwef  --table keyWord --columns 'word,total' -m 1

指定输出路径、指定数据分隔符

sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password 158758qwef  --keyWord --target-dir '/sqoop/td' --fields-terminated-by '\t'

指定Map数量 -m

sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password 158758qwef  --table keyWord --target-dir '/sqoop/td1' --fields-terminated-by '\t' -m 2

增加where条件, 注意:条件必须用引号引起来

sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password 158758qwef  --table keyWord --where 'id>3' --target-dir '/sqoop/td2'
将MySQL上的数据导出到数据库中
sqoop export --connect "jdbc:mysql://192.168.100.10:3306/mydatabase?" --username root --password 158758qwef --table stu_test --m 1 --export-dir /user/hadoop/keyWord --input-fields-terminated-by '\t' --columns="word,total"
把MySQL上的数据导入到Hive中

先把hive中lib目录下的hive-common-2.3.7.jar包导入到sqoop安装目录下的lib中

扫描二维码关注公众号,回复: 11375641 查看本文章
sqoop import --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password password --table keyWord --hive-import --create-hive-table --fields-terminated-by "\t" -m 1 --target-dir test5

运行命令后进入到hive中可以看到创建了一个keyWord表

在这里插入图片描述

把Hive上的数据导出到MySQL中

运行如下命令

sqoop export --connect jdbc:mysql://192.168.100.10:3306/mydatabase --username root --password password --table keyWord2 --export-dir /user/hive/warehouse/keyword

到MySQL中可以select一下keyWord2表,可以看到数据已经导出到keyWord2表中(嘤嘤嘤不过没指定分隔符,数据导出有点乱)
在这里插入图片描述

记些bug

  1. 在数据库连接驱动拷贝到$SQOOP_HOME(sqoop安装目录)/lib里之后仍然出现错误:Sqoop Could not load db driver class: com.mysql.jdbc.Driver。

原因是所用的sqoop版本不支持所用的MySQL JDBC驱动,可以换一个驱动试试

  1. 在把数据库中的数据导入到HDFS时,发生错误:Error during import: No primary key could be found。

    解决方法有三,详见:通过Sqoop将Oracle中表导入到HDFS时报错Error during import: No primary key could be found

猜你喜欢

转载自blog.csdn.net/atuo200/article/details/106505563