sqoop基本使用,mysql导入到hive,hbase

Posted Ramelon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqoop基本使用,mysql导入到hive,hbase相关的知识,希望对你有一定的参考价值。

命令

bin/sqoop import --connect jdbc:mysql://10.10.72.131:3306/bilibili \\
--username root \\
--password 123456 \\
--query 'select * from user where usersex="女" and $CONDITIONS' \\
--target-dir /tmp/tmpData \\
--hive-import \\
--fields-terminated-by '\\t' \\
--hive-database db_hive3 \\
--hive-table db \\
-m 1 

fields-terminated-by : 字段分隔符

target-dir:hdfs临时目录,不能提前存在否则会抛文件存在的异常,sqoop先把查询的数据存起来,再把数据保存到hive对应的表。

-m 1:用一个mr程序来跑,节省内存

$CONDITIONS: 只要用到条件查询就要加上这个。防止空文件异常。

注意因为,mysql是关系型数据库,hbase,hive非关系型数据库,默认一行数据对应mysql中的一行。

唯一区别实在非关系型数据库不同字段用分隔符分割。mysql 查出来的数据可能默认是逗号分隔。这里需要特别注意!!!!

要先看hive中存储的文件分隔符是啥就填啥。

不然会出现错误如下图:因为文件本身用^A分隔,导入数据分隔符为’,'和‘\\t’就会出错。

如果只要某个字段插入,需要在对应位置之前之后都插入指定的分隔符。

常用参数:https://blog.csdn.net/Apache_Jerry/article/details/104533104

sqoop配置

  • 找到如下路径

  • 扎到sqoop-env.sh 如果没有这个文件执行cp sqoop-env-template.sh sqoop-env.sh,自己拷贝一份改。

  • 加驱动

  • 把hive的连接需要的jar包导入

  • 这里说下怎么找到hive的jar包

  • 对应hive/lib下面的jar包

  • 拷贝代码如下

  • cp hive-common-3.1.3.jar [在这里指定自己的sqoop安装目录下面的lib文件夹]  举例/opt/module/sqoop-1.4.7/lib
    

mysql 导入hive需要环境基本完成。

以上是关于sqoop基本使用,mysql导入到hive,hbase的主要内容,如果未能解决你的问题,请参考以下文章

Sqoop从本地MySQL导入到Hive为啥要求Sqoop一定要在HDFS中

sqoop从mysql导入到hive中问题

使用sqoop从mysql导入数据到hive

使用 sqoop 将mysql数据导入到hive(import)

如何使用 Sqoop 从 MySQL 增量导入到 Hive?

sqoop从mysql导入到hive为啥0变成null