配置单元中的额外空行

cnjp1d6j  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(381)

我的项目涉及将数据从sql数据库迁移到hdfs,然后创建将数据文件链接到表的配置单元表。我通过将数据库的内容导出到本地机器上的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

最后,我运行一个hql脚本,该脚本来自同一个shell脚本文件:

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行。我怀疑这个问题的原因是一些行被截断了(行的剩余部分被带到下一行)。这将导致包含完全错误数据的额外行。
是什么导致了这个问题,有解决办法吗?

kiayqfof

kiayqfof1#

问题是因为csv文件中额外的空白新行。在任何编辑器中编辑CSV文件(对于EX:VI表.CSV),并在数据结束后删除空白行。
csv中有空行的配置单元表: United States Barbados 130 United States Qatar 109 Australia United States 329 Australia India 310 NULL NULL NULL NULL 去除CSV中空白行后的Hive表: United States Barbados 130 United States Qatar 109 Australia United States 329 Australia India 310 最好的方法是使用“sqoop”将数据从sql数据库导入hive。sqoop将处理模式,您也可以增量加载数据。请参阅:https://sqoop.apache.org/docs/1.4.2/sqoopuserguide.html#_importing_data_into_hive

polkgigr

polkgigr2#

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

sqoop import -D db2.jcc.charsetDecoderEncoder=3

相关问题