Выборочная загрузка данных из нескольких папок s3 в таблицу в Hive - PullRequest
0 голосов
/ 22 января 2019

У меня есть корзина s3 с несколькими папками, скажем, A, B и есть также некоторые другие папки. Структура папок выглядит следующим образом:

s3://buckets/AGGREGATED_STUDENT_REPORT/data/A/,
s3://buckets/AGGREGATED_STUDENT_REPORT/data/B/ etc.

И внутри этих двух папок ежедневный отчет генерируется в другой папке, такой как run_date = 2019-01-01, поэтому результирующая структура папок выглядит примерно так:

  s3://buckets/AGGREGATED_STUDENT_REPORT/data/A/run_date=2019-01-01/..,
  s3://buckets/AGGREGATED_STUDENT_REPORT/data/B/run_date=2019-01-01/..

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

CREATE EXTERNAL TABLE STUDENT_SUMMARY
 (
   ROLL_NUM    STRING,
   CLASS  STRING,
   REMARKS STRING,
   LAST_UPDATED STRING,
 )
  ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  STORED AS TEXTFILE LOCATION  's3://AGGREGATED_STUDENT_REPORT/data/*/run_date=2018-12-31';

Но в приведенном выше запросе я не могу понять, как обрабатывать группу выбранных папок.

1 Ответ

0 голосов
/ 22 января 2019

Любой шанс, что вы можете скопировать папки в HDFS. Две причины:

a) Вы можете создать только одну папку в HDFS и скопировать все A, b, c и т. Д. В одну и ту же папку HDFS и использовать их в параметре location.

б) Я предполагаю, что производительность запросов будет лучше, если данные будут храниться в HDFS, а не в S3.

...