csv - 将 csv 文件的全部内容加载到 Hive 表中的单个列中

标签 csv hadoop hive

在 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/

相关文章:

mysql - 找不到文件 '/var/www/cms/numbers/numberswithnatinality.csv'(错误代码 : 13)

python - 删除表语句中的 Hive ParseException

sql - 如何使用hive2到Hadoop的连接在Workbench\j中搜索数据库\表?

sql - 在 Impala 中将数组列查询为行的解决方法

linux - 将数据解析为 CSV 文件

csv - 数据工厂 azure blob 源 - 通配符

python - 使用 csv 阅读器从文件中删除行并列出 python

hadoop - 将数据传入和传出 Elastic MapReduce HDFS

hadoop作业跟踪器无法启动

hadoop - HDFS 设置代表不起作用