【问题标题】:Presto (Athena) loading of a CSV file with quote-escaped commasPresto (Athena) 加载带有引号转义逗号的 CSV 文件
【发布时间】:2018-11-28 20:28:43
【问题描述】:

考虑 CSV 文件中的以下行:

1,0,True,"{""foo"":null,""bar"":null}",0,1
                       ▲

突出显示的,列的一部分。也就是这个全文:" {""foo"":null,""bar"":null}"是单列的值。然而,AWS Athena 将突出显示的 , 解释为 列分隔逗号,错误地将文本拆分为多个列。

我知道我可以将列分隔符更改为其他内容以避免此问题。我的问题是:这是 AWS Athena / Presto 中的错误吗?我怎样才能逃避这些逗号?

【问题讨论】:

    标签: csv amazon-athena presto


    【解决方案1】:

    如果你的数据用双引号括起来,你需要使用OpenCSVSerDe

    对于示例数据,下表定义有效:

    1,0,True,"{""foo"":null,""bar"":null}",0,1
    

    如何在数据中转义逗号

    CREATE EXTERNAL TABLE `extra_comma`(
      `a` string COMMENT 'from deserializer', 
      `b` string COMMENT 'from deserializer', 
      `c` string COMMENT 'from deserializer', 
      `d` string COMMENT 'from deserializer',
      `e` string COMMENT 'from deserializer',
      `f` string COMMENT 'from deserializer'
      )
    ROW FORMAT SERDE 
      'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
    STORED AS INPUTFORMAT 
      'org.apache.hadoop.mapred.TextInputFormat' 
    OUTPUTFORMAT 
      'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
    LOCATION
      's3://aws-glue-stackoverflow/comma_in_data/'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2022-08-06
      • 2012-05-14
      • 2019-03-28
      • 1970-01-01
      • 2012-11-17
      • 2014-11-16
      相关资源
      最近更新 更多