AWS Athena CSV разделитель метаданных изменился после первого запроса - PullRequest
0 голосов
/ 29 июня 2018

Я хочу запросить s3 csv файлы в Афину. Исходный csv-файл desc: (разделитель '|')

system information
val1|val2|val3|val4|val5|   

Основываясь на том, что я создаю таблицу в Афинах:

Create external table dbname.fromcsv
(
col1 string,
col2 string,
col3 string,
col4 string,
col5 string
)
 ROW FORMAT SERDE  'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
  "separatorChar" = '|')
LOCATION
's3://mybucketloc/folder/'
TBLPROPERTIES ("skip.header.line.count"='1');

После создания таблицы и запросов к Athena все выглядит хорошо, данные хорошо разделены и т. Д.

Результат первого запроса:

col1 col2  col3   col4 col5
val1 val2  val3   val4 val5

Следующий запрос к той же таблице возвращает значения с разделителем ',', хранящимся в одном столбце ...

col1                     col2  col3   col4  col5
val1,val1,val,val4,val5   

А потом в моем s3 ведре добавляются дополнительные файлы .csv.metadata

Как обращаться с таким делом? Я не хочу каждый раз удалять файл .csv.metadata? Есть ли способ сохранить исходное определение создания таблицы? Я пытался изменить таблицу создания на ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' и многие другие ...

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Изменить это:

 'serialization.format' = ';',                                                     
  'field.delim' = ';'

для:

 'serialization.format' = ',',                                                     
  'field.delim' = ','
0 голосов
/ 29 июня 2018

Я считаю, что ваш s3: // mybucketloc / folder / совпадает с корзиной результатов запроса athena. Это ведро создано Athena для хранения таких файлов, как .csv.metadata и т. Д., И предназначено для его внутреннего использования, поэтому у вас есть файлы .csv.metadata, которые находятся в том же ведре, что и ваши csv-файлы.

Самым простым решением может быть размещение ваших csv-файлов в другой корзине s3, а не в корзине athena-query-results.

...