【问题标题】:Loading entire content of a csv file into a single column in a Hive table将 csv 文件的全部内容加载到 Hive 表中的单个列中
【发布时间】:2017-01-12 20:21:35
【问题描述】:

在 Hive 相关问题上可以使用一些帮助。

我正在尝试将整个 csv 文件加载到单列 Hive 表中。文件中的每个条目都应该是 Hive 表中的一行。我尝试更改 ROW FORMAT - 特别尝试更改为 LINES TERMINATED BY ',' 而不是 '\n'。但是,目前仅支持 '\n' 字符。目前是 JIRA 问题 (https://issues.apache.org/jira/browse/HIVE-11996)。

我目前唯一的想法是通过 linux 命令将文件中的逗号替换为 \n 但是我想看看是否有人可以提出一些其他值得考虑的解决方案。

提前致谢!

【问题讨论】:

    标签: csv hadoop hive


    【解决方案1】:

    您可以在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2015-07-25
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多