我试图将磁盘上的.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文件中的列分隔符。有什么建议吗?
提前致谢。
答案 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;
它正在加载