Разделитель метаданных AWS Athena csv изменен после первого использования запроса

Я хочу запросить файлы s3 csv для athena. Описание исходного CSV-файла: (разделитель '|')

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 '|' и многие другие ...


person dzabba    schedule 29.06.2018    source источник
comment
Ваш вопрос сбивает с толку. Что вы имеете в виду, говоря, что после создания таблицы все выглядит нормально? Это было до того, как вы спросили Афину, откуда вы знаете, что все выглядит нормально? Кроме того, что вы имеете в виду, когда в моем s3 loc добавляются дополнительные файлы .csv.metadata? Вы хотите сказать, что Афина создала файлы в корзине Amazon S3? Измените свой вопрос, чтобы лучше объяснить, что вы делаете на каждом этапе и за чем наблюдаете. Кроме того, можете ли вы предоставить образец входных данных, разделенных |   -  person John Rotenstein    schedule 29.06.2018
comment
Дело в том, что athena создает некоторые файлы метаданных, которые используются после выполнения первого запроса в качестве источника таблицы, которую я проверил с помощью $ path.   -  person dzabba    schedule 29.06.2018


Ответы (2)


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

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

person Nick    schedule 29.06.2018

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

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

для:

 'serialization.format' = ',',                                                     
  'field.delim' = ','
person Anderson de Oliveira Araujo    schedule 12.02.2019