在 Hive 相关问题上需要一些帮助。
我正在尝试将整个 csv 文件加载到单列 Hive 表中。文件中的每个条目都应该是 Hive 表中的一行。我试图更改 ROW FORMAT - 特别是尝试更改为 LINES TERMINATED BY ',' 而不是 '\n'。但是,目前仅支持 '\n' 字符。目前这是一个 JIRA 问题 ( https://issues.apache.org/jira/browse/HIVE-11996 )。
我目前唯一的想法是通过 linux 命令用\n 替换文件中的逗号,但是我想看看是否有人可以提出一些其他值得考虑的解决方案。
提前致谢!
最佳答案
您可以在 Hive 中创建一个临时表,然后分别选择每一列。让我们在 HDFS“/tmp/test.csv”中创建一个包含以下内容的测试文件:
col1,col2,col3
col4,col5,col6
col7,col8,col9
如果您创建这个临时表:
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;
table final_csv 的内容是这样的:
col1
col4
col7
col2
col5
col8
col3
col6
col9
关于csv - 将 csv 文件的全部内容加载到 Hive 表中的单个列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41622278/