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;