微信扫一扫

028-83195727 , 15928970361
business@forhy.com

Hive数据仓库-Sqoop导入数据注意事项

Hive数据导入,Hive插入,Sqoop导入Hive,Sqoop导入数据注意事项,数据仓库2016-10-27

注意事项一

按照整张表导入的时候,是按照原来数据库中列的顺序进行赋值的,也就是说如果数据库中A,B两列的数据,在Hive中导入数据的表是B,A两列,这个时候B中实际存储的值仍然是数据库A中的值,而A中存储的是数据库B列的值。


注意事项二

日期形式的数据,在数据库中导入的时候,可能是因为格式的问题,我的日期后面多一个.0然后映射不到日期数据,解决办法是将日期格式的数据改为string类型的数据(Hive中)。


注意事项三

在用终端查询数据时出现乱码,开始一直认为是Hive中编码出现了问题,但是后来发现并不是Hive的问题,问题在于使用的终端的编码格式不是utf-8。将使用的终端的编码改成utf-8就可以了。


注意事项四

在使用查询语句导入Hive表的时候,注意Hive中的表的列要和查询语句中查询出的列保持一致,而且列的数量也要一致,否则Hive会提示列的数量不一致,从而不执行指令。


注意事项五

在进行查询导入的时候,开始一直出现问题,在上一篇博文中也提出了解决方案,还有一个比较奇葩的想法是:用数据库中生成中间表通过

mysql -uxxx -pxxx -e 'insert into TB select * from ....';

然后再用表直接导入过来,当然后来发现是可以直接导入的,不过也是一种思路吧。

直接导入Hive模版

/usr/local/sqoop1.4/sqoop1.4_hadoop2.0/bin/sqoop import \
--connect jdbc:mysql://localhost:3306/db  --username xxx  --password xxx \
--query "SQL where \$CONDITIONS;" -m 1 \
--null-string 'null' --null-non-string 'null' \
--hive-import --hive-table hivedb.data --hive-overwrite \
--fields-terminated-by ',' --lines-terminated-by '\n' \
--target-dir /home/hadoop/data/hive/warehouse --as-textfile \
--delete-target-dir;

转载请注明出处:Hive数据仓库-Sqoop导入数据注意事项