首页 > 解决方案 > Hive 中的额外空行

问题描述

我的项目涉及将数据从 SQL 数据库迁移到 HDFS,然后创建将数据文件链接到表的 Hive 表。我通过将数据库的内容导出到本地计算机上的 CSV 文件来手动进行迁移,我正在使用 winSCP 将这些内容复制到 hadoop edgenode。我正在运行以下命令:

hadoop fs -mkdir /user/cloudera/project/database/table

其次是

hadoop fs -put /home/cloudera/project/table.csv /user/cloudera/project/database/table/table.csv

最后,我正在运行从同一个 shell 脚本文件调用的 hql 脚本:

CREATE TABLE IF NOT EXISTS TABLE_NAME 
(
    FIELD_ONE STRING, 
    FIELD_TWO INT,
    ETC STRING
) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
STORED AS TEXTFILE
LOCATION '/user/cloudera/project/database/table'
tblproperties ("skip.header.line.count"="1");

出现的问题是 HDFS 中的行数比 SQL 数据库中的行数多 70 行。我怀疑这个问题的原因是某些行被截断(行的剩余部分被带到下一行)。这会导致额外的行包含完全错误的数据。

什么可能导致此问题,是否有解决方法?

标签: csvhadoophivehqlcloudera-cdh

解决方案


似乎与您使用哪个数据库导入数据有关?如果您使用的是 DB2 数据库,那么下面的参数将解决您的问题。

sqoop import -D db2.jcc.charsetDecoderEncoder=3 

推荐阅读