【问题标题】:Hive external table pointing to CSV file with embedded double quotesHive 外部表指向带有嵌入双引号的 CSV 文件
【发布时间】:2018-01-04 04:32:58
【问题描述】:

我正在尝试创建一个指向 CSV 文件的外部 Hive 表。 我的 CSV 文件有一个列 (col2),它可以有双引号和逗号作为列值的一部分。

每列数据:

Col1 : 150
Col2 : BATWING, ABC "D " TEST DATA
Col3 : 300

CSV 中的行:

150,"BATWING, ABC ""D "" TEST DATA",300

创建表 DDL:

CREATE EXTERNAL TABLE test (
   col1 INT, 
   col2 STRING, 
   col3 INT) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
ESCAPED BY '"' 
LOCATION 's3://test-folder/test-file.csv'

当我查询表时,我在 col3 中看到空值。

创建表格时我在这里遗漏了什么?任何帮助表示赞赏

【问题讨论】:

    标签: csv hadoop hive hiveql


    【解决方案1】:

    使用OpenCSVSerde。这是一个例子

    创建表

    CREATE TABLE bala (col1 int, col2 string, col3 int)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
    WITH SERDEPROPERTIES(
      "separatorChar" = ",", "escapeChar"='\"'
    );
    

    加载数据

    hive>LOAD DATA INPATH '/../test.csv' INTO TABLE bala
    Loading data to table bala
    Table testing.bala stats: [numFiles=1, totalSize=40]
    OK
    Time taken: 0.514 seconds
    

    检查是否已加载

    hive> select * from bala;
    OK
    150 BATWING, ABC "D " TEST DATA 300
    Time taken: 0.288 seconds, Fetched: 1 row(s)
    

    【讨论】:

    • :- 我的文本中有双引号 - 列示例 - “5f367c99e4b0799af79a2b89”,“华盛顿:乔治和玛莎”,“因友谊而加入,因爱而加冕””, " 在这里,第二列里面有几个双引号。我尝试了与上述相同的事情,但它并没有帮助我。问题仍然存在。有什么办法可以解决这个问题?
    【解决方案2】:

    Create hive external table:
    
    DROP TABLE IF EXISTS ${hiveconf:dbnm}.tblnm ;
    CREATE EXTERNAL TABLE ${hiveconf:dbnm}.tblnm (
    C1 string,
    C2 string
    )
    PARTITIONED BY (C3 string)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
    WITH SERDEPROPERTIES (
        "separatorChar" = '|'  (change it to your separator)
       ,"quoteChar"     = '\"'
    ) 
    STORED AS TEXTFILE 
    LOCATION '/hdfspath' 
    --tblproperties ("skip.header.line.count"="1")
    ;
    MSCK REPAIR TABLE ${hiveconf:dbnm}.tblnm;

    【讨论】:

      猜你喜欢
      • 2019-03-28
      • 2014-04-22
      • 2023-03-27
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多