Presto (Афина) загрузка CSV-файла с запятыми-кавычками - PullRequest
0 голосов
/ 28 ноября 2018

Рассмотрим следующую строку в файле CSV:

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

Подсвеченный , является частью столбца .То есть этот полный текст: " {""foo"":null,""bar"":null}" является значением одного столбца.Однако AWS Athena интерпретирует выделенный , как запятую, разделяющую столбцы , неправильно разбивая этот текст на несколько столбцов.

Я знаю, что мог бы изменить разделитель столбцов на что-то другое, чтобы избежать этой проблемы.Мой вопрос: это ошибка в AWS Athena / Presto?Как я могу избежать этих запятых?

1 Ответ

0 голосов
/ 29 ноября 2018

Если ваши данные заключены в двойные кавычки, вам нужно использовать 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/'
...