当前位置:   article > 正文

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

sqoop --hive-home

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

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


参数

  1. hive导入参数
  2.   --hive-home 重写$HIVE_HOME
  3.   --hive-import 插入数据到hive当中,使用hive的默认分隔符
  4.   --hive-overwrite 重写插入
  5.   --create-hive-table 建表,如果表已经存在,该操作会报错!
  6.   --hive-table [table] 设置到hive当中的表名
  7.   --hive-drop-import-delims 导入到hive时删除 \n, \r, and \01
  8.   --hive-delims-replacement 导入到hive时用自定义的字符替换掉 \n, \r, and \01
  9.   --hive-partition-key hive分区的key
  10.   --hive-partition-value hive分区的值
  11.   --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中

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


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/396265
推荐阅读
相关标签
  

闽ICP备14008679号