символический файл с чтением частичных данных - PullRequest
0 голосов
/ 23 сентября 2019

Я сохранил ежемесячные данные в заданном сегменте S3 и могу без проблем выполнить запрос athena.Но если я использую символический файл, Афина читает только данные за январь и июль.Это очень странно.

Мой символический файл выглядит примерно так ...

s3://some_bucket/sub_bucket/no_details_201801.csv.gz
s3://some_bucket/sub_bucket/no_details_201802.csv.gz
s3://some_bucket/sub_bucket/no_details_201803.csv.gz
s3://some_bucket/sub_bucket/no_details_201804.csv.gz
s3://some_bucket/sub_bucket/no_details_201805.csv.gz
s3://some_bucket/sub_bucket/no_details_201806.csv.gz
s3://some_bucket/sub_bucket/no_details_201807.csv.gz
s3://some_bucket/sub_bucket/no_details_201808.csv.gz
s3://some_bucket/sub_bucket/no_details_201808.csv.gz
s3://some_bucket/sub_bucket/no_details_201810.csv.gz
s3://some_bucket/sub_bucket/no_details_201811.csv.gz
s3://some_bucket/sub_bucket/no_details_201812.csv.gz

Из этих 12 файлов отсутствуют файлы данных за 2 месяца, и Афина не жалуется на это.Это хорошо.Но это не чтение остальных 10 файлов.Все в порядке.Но, кажется, читает только 2 файла (случайно выбранных), что недопустимо.Кто-нибудь испытывал это с символическим файлом Афины?

1 Ответ

1 голос
/ 24 сентября 2019

Я предполагаю, что вы используете SymlinkTextInputFormat.Если какой-либо из файлов отсутствует в файле символической ссылки, Athena и Presto в EMR должны выполнить запрос с ошибкой.Я не смог воспроизвести проблему.

CREATE EXTERNAL TABLE `symlink_test`(
  `col1` string, 
  `col2` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ( 
  'escapeChar'='\\', 
  'quoteChar'='`', 
  'separatorChar'=',') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://my-bucket/datasets/symlink'

Если какой-либо из файлов в символьной ссылке не существует, Афина и Presto выдают сообщение об ошибке, похожее на:

HIVE_UNKNOWN_ERROR: Input path does not exist:[...]
...