赞
踩
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
这里需要注意的是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.
- /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;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。