hiveql—有选择地将多个s3文件夹中的数据加载到hive中的表中

zd287kbt  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(459)

我有一个s3存储桶,里面有多个文件夹,比如,a,b,还有一些其他的文件夹。文件夹结构如下:

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

在这两个文件夹中,daily report在另一个文件夹中生成,如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/..

现在在hive中,我想创建一个外部表,只在这两个文件夹中获取每个月最后一天生成的数据,忽略其他文件夹,如下所示:

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';

但是在上面的查询中,我不知道如何处理一组选定的文件夹。

ctzwtxfj

ctzwtxfj1#

你能不能把文件夹复制到hdfs上。两个原因:
a) 您可以在hdfs中创建一个文件夹,将所有a、b、c等复制到同一个hdfs文件夹中,并在location参数下使用相同的文件夹。
b) 我猜如果数据驻留在hdfs而不是s3中,查询性能会更好。

相关问题