Hive数据仓库-Sqoop将数据从Mysql导入Hive中

Sqoop是一个实现在关系型数据库和Hive进行数据交换的工具。主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

转载请注明出处:Hive数据仓库-Sqoop将数据从Mysql导入Hive中


参数

hive导入参数
  --hive-home   重写$HIVE_HOME
  --hive-import          插入数据到hive当中,使用hive的默认分隔符
  --hive-overwrite  重写插入
  --create-hive-table  建表,如果表已经存在,该操作会报错!
  --hive-table [table]  设置到hive当中的表名
  --hive-drop-import-delims  导入到hive时删除 \n, \r, and \01 
  --hive-delims-replacement  导入到hive时用自定义的字符替换掉 \n, \r, and \01 
  --hive-partition-key          hive分区的key
  --hive-partition-value   hive分区的值
  --map-column-hive           类型匹配,sql类型对应到hive类型

示例

最基本的方式是直接把表的所有的数据复制过来。这里希望大家注意库要定义好,Hive中如果不定义的话会直接放入default中去。

/usr/local/sqoop1.4/sqoop1.4_hadoop2.0/bin/sqoop import --connect jdbc:mysql://localhost:3306/ managdb --username xxx --password xxx --table data_xxx_view --fields-terminated-by ','  --hive-import --hive-table userxxxxdb.data_xxx --hive-overwrite -m 1

通过Sqoop进行查询的情况

这里需要注意的是where后面需要跟$CONDITIONS

这样直接存入hdfs中然后再进行导入即可,我尝试过直接导入,但是总是出现下面的这个错误,也没能解决掉,所以采用了这种间接的形式

At minimum, you must specify --connect and --table Arguments to mysqldump and other subprograms may be supplied after a '--' on the command line.

转载请注明出处: Hive数据仓库-Sqoop将数据从Mysql导入Hive中

/usr/local/sqoop1.4/sqoop1.4_hadoop2.0/bin/sqoop import \
--connect "jdbc:mysql://localhost:3306/managdb?useUnicode=true&characterEncoding=utf-8"  --username XX  --password xxxx\
--query "select p FROM TB where \$CONDITIONS;" -m 1 \
--null-string 'null' --null-non-string 'null' \
--fields-terminated-by ',' --lines-terminated-by '\n' \
--hive-drop-import-delims \
--target-dir /usr/local/data --as-textfile \
--delete-target-dir;


  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值