[英]Loading entire content of a csv file into a single column in a Hive table
可以对 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" 中创建一个包含以下内容的测试文件:
列 1、列 2、列 3
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;
表 final_csv 的内容是这样的:
col1
col4
col7
col2
col5
col8
col3
col6
col9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.