我有一个带有多个文件夹的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';
但是在上面的查询中,我无法弄清楚如何处理所选文件夹组。
答案 0 :(得分:0)
只要有机会,您就可以将文件夹复制到HDFS。 两个原因:
a)您只能在HDFS中创建一个文件夹,并将所有A,b,c等复制到同一HDFS文件夹中,并在您的location参数下使用相同的文件。
b)我猜测如果数据驻留在HDFS中而不是S3中,查询性能会更好。