我有一个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';
但是在上面的查询中,我不知道如何处理一组选定的文件夹。
1条答案
按热度按时间ctzwtxfj1#
你能不能把文件夹复制到hdfs上。两个原因:
a) 您可以在hdfs中创建一个文件夹,将所有a、b、c等复制到同一个hdfs文件夹中,并在location参数下使用相同的文件夹。
b) 我猜如果数据驻留在hdfs而不是s3中,查询性能会更好。