Presto: Как прочитать из s3 целую корзину, которая разбита на подпапки? - PullRequest
0 голосов
/ 14 февраля 2020

Мне нужно прочитать с помощью presto из s3 весь набор данных, который находится в "bucket-a". Но внутри корзины данные были сохранены в подпапках по годам. Итак, у меня есть ведро, которое выглядит так:

Bucket-a> 2017> data

Bucket-a> 2018> больше данных

Bucket-a> 2019> больше data

Все приведенные выше данные - это та же таблица, но сохраненная таким образом в s3. Обратите внимание, что в самом bucket-a нет данных, просто внутри каждой папки.

Что мне нужно сделать, это прочитать все данные из bucket как одну таблицу, добавив год в виде столбца или раздела.

Я пытался сделать это таким образом, но не сработало:

CREATE TABLE hive.default.mytable (
  col1 int,
  col2 varchar,
  year int
)
WITH (
  format = 'json',
  partitioned_by = ARRAY['year'],
  external_location = 's3://bucket-a/'--also tryed 's3://bucket-a/year/'

)

, а также

CREATE TABLE hive.default.mytable (
  col1 int,
  col2 varchar,
  year int
)
WITH (
  format = 'json',
  bucketed_by = ARRAY['year'],
  bucket_count = 3,
  external_location = 's3://bucket-a/'--also tryed's3://bucket-a/year/'
)

Все вышеперечисленное не сработало.

Я видел людей, пишущих с разделами на s3 с помощью presto, но я пытаюсь сделать наоборот: читать данные s3, которые уже разбиты на папки как одну таблицу.

Спасибо.

1 Ответ

0 голосов
/ 14 февраля 2020

Если ваши папки следовали соглашению об именах папок раздела Hive (year=2019/), вы можете объявить таблицу как секционированную и просто использовать system. sync_partition_metadata процедуру в Presto .

Теперь, ваши папки не соответствуют соглашению, поэтому вам необходимо зарегистрировать каждую из них по отдельности как раздел, используя процедуру system.register_partition (будет доступна в Presto 330, готовится к выпуску). (Альтернатива register_partition - запустить соответствующий ADD PARTITION в CLI Hive.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...