问题处理
sqoop导入异常
将oracle数据库中的表,用sqoop导入hive时,如果表中字段值含有“,”,会导致导入hive后,每一行所有字段的内容都放在了第一个字段,其他字段均没有值。这是因为hive底层是以文件的形式保存数据,而文件的分隔符是“,”。所以对于以上情况,命令中要添加对“,”的处理,即添加--fields-terminated-by "\001"。
sqoop codegen \
--connect jdbc:oracle:thin:@//ip:port/orcl \
--username test \
--password test \
--table TEST.T_OD_IC_FLOW \
--fields-terminated-by '\001' \
--bindir /opt/hive/lib
hive聚合查询异常
执行聚合查询时,报错如上所示,但看日志时,在路径/tmp/hadoop/.log中并没有找到相应的日志。调整hive的配置文件hive-site.xml,增加
<property>
<name>hive.root.logger</name>
<value>INFO,console</value>
<description>日志级别设置为INFO,输出到控制台</description>
</property>
然后可以正常查询,但是删掉上图中增加的红框内容,重启hadoop、hive,仍然可以正常查询。无法再现问题,未解之谜。正常查询截图如下所示。
经验证,是内存崩溃导致。/tmp/root/hive.log 显示如下