将.csv文件加载到HIVE中会生成一个包含单个长行的表

时间:2015-05-13 21:33:08

标签: csv hive

我试图将磁盘上的.csv文件加载到Hive中。

根据StackOverflow上的answer,我使用以下查询创建了表:

CREATE TABLE mytable 
(
id_number STRING, 
country STRING
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

然后我使用以下查询将文件中的数据转储到Hive中:

LOAD DATA LOCAL INPATH /mytable.csv OVERWRITE INTO TABLE mytable;

不幸的是,hive中的结果表由一行组成,其中每个元素(如下所示)是.csv文件中一行的碎片版本:

" aDXLS23M \ tRussia"

我已经坚持了好几个小时,并且无法弄清楚如何让hive识别.csv文件中的列分隔符。有什么建议吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

在hive shell中执行此操作:

DROP TABLE IF EXISTS mytable;

CREATE TABLE mytable (id_number STRING,country STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;

LOAD DATA LOCAL INPATH /mytable.csv OVERWRITE INTO TABLE mytable;

只需在create命令中将,替换为\t即可。如果可能,请发布您的csv内容。

如果仍然无法正常工作,请尝试从加载数据命令中删除overwrite,如下所示:

LOAD DATA LOCAL INPATH /mytable.csv INTO TABLE mytable;

答案 1 :(得分:-1)

将.CSV数据文件加载到hive表

例如。 创建表薪水(yrsofexp decimal(10,2),salary decimal(10,2)) 行格式分隔的字段以','结尾,以文件形式存储;

LOAD DATA LOCAL INPATH '/home/Test/SalaryData.csv'
OVERWRITE INTO TABLE salary;

它正在加载