我有按日期和时间组织的csv文件,如下所示
logs/YYYY/MM/DD/CSV files...
我已经设置了apachedrill在这些csv文件上执行sql查询。因为有很多csv文件;可以利用文件的组织来优化性能。例如,
SELECT * from data where trans>='20170101' AND trans<'20170102';
在这个sql中,目录 logs/2017/01/01
应扫描数据。有没有办法让apachedrill基于这个目录结构进行优化?在Hive、 Impala 或其他工具中是否可以做到这一点?
请注意:
sql查询几乎总是包含时间范围。
给定目录中的csv文件数量不是很大。加上多年的数据,这将是巨大的
每个csv文件中都有一个名为“trans”的字段,其中包含日期和时间。
csv文件根据“trans”字段的值放在适当的目录下。
csv文件不遵循任何模式。列可以不同,也可以不不同。
1条答案
按热度按时间7y4bm7vi1#
在数据文件中使用列进行查询无助于分区修剪。
您可以在drill中使用dir*变量来引用表中的分区。
您可以使用tran\u year、tran\u month和tran\u date列查询分区修剪。
还要看看下面的查询是否有助于修剪。
如果是这样,可以通过别名concat来定义视图(
dir0
,dir1
,dir2
)至trans
列名和查询。详见下文。
https://drill.apache.org/docs/how-to-partition-data/