hadoop—将csv文件的全部内容加载到配置单元表中的单个列中

qkf9rpyu  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(235)

可能需要一些关于Hive的问题的帮助。
我正在尝试将整个csv文件加载到一个单列配置单元表中。文件中的每个条目都应该是配置单元表中的一行。我尝试更改行格式-特别是尝试更改为以“,”而不是“\n”结尾的行。但是,目前只支持'\n'字符。目前这是一个jira问题(https://issues.apache.org/jira/browse/hive-11996).
我目前唯一的想法是通过linux命令将文件中的逗号替换为\n但是我想看看是否有人可以提出一些其他值得考虑的解决方案。
提前谢谢!

guz6ccqo

guz6ccqo1#

您可以在配置单元中创建一个临时表,然后分开选择每一列。让我们在hdfs“/tmp/test.csv”中创建一个包含以下内容的测试文件:
列1,列2,列3
列4,列5,列6
第7列、第8列、第9列
如果创建此临时表:

CREATE TABLE tmp_csv(c1 STRING, c2 STRING, c3 STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";

LOAD DATA INPATH '/tmp/test.csv' OVERWRITE INTO TABLE tmp_csv;

然后可以使用以下内容重建表:

CREATE TABLE final_csv AS SELECT * FROM 
(   SELECT t1.c1 as col FROM tmp_csv t1 
    UNION ALL 
    SELECT t2.c2 as col FROM tmp_csv t2
    UNION ALL 
    SELECT t3.c3 as col FROM tmp_csv t3
)combined;

表格final\u csv的内容如下:

col1
col4
col7
col2
col5
col8
col3
col6
col9

相关问题