gpt4 book ai didi

hadoop - 基于时间的目录结构Apache Drill

转载 作者:行者123 更新时间:2023-12-02 22:03:17 25 4
gpt4 key购买 nike

我有按日期和时间组织的CSV文件,如下所示

logs/YYYY/MM/DD/CSV files...

我已设置Apache Drill在这些CSV文件之上执行SQL查询。由于有很多CSV文件;文件的组织可以用来优化性能。例如,
SELECT * from data where trans>='20170101' AND trans<'20170102';

在此SQL中,应扫描 logs/2017/01/01目录中的数据。有没有办法让Apache Drill基于此目录结构进行优化?是否可以在Hive,Impala或任何其他工具中执行此操作?

请注意:
  • SQL查询几乎总是包含时间范围。
  • 给定目录中CSV文件的数量不是很大。结合所有年度的数据,这将是巨大的
  • 每个CSV文件中都有一个名为“trans”的字段,其中包含日期和时间。
  • 根据“trans”字段的值,将CSV文件放置在适当的目录下。
  • CSV文件不遵循任何架构。列可以相同也可以不同。
  • 最佳答案

    使用数据文件中的列进行查询将无助于分区修剪。

    您可以在Drill中使用dir *变量来引用表中的分区。

    create view trans_logs_view as 
    select
    `dir0` as `tran_year`,
    `dir1` as `trans_month`,
    `dir2` as `tran_date`, * from dfs.`/data/logs`;

    您可以使用tran_year,tran_month和tran_date列查询分区修剪。

    另请参阅下面的查询是否有助于修剪。
    select count(1)  from dfs.`/data/logs` 
    where concat(`dir0`,`dir1`,`dir2`) between '20170101' AND '20170102';

    如果是这样,您可以通过将concat( dir0dir1dir2)别名为 trans列名和查询来定义 View 。

    请参阅下面的更多细节。

    https://drill.apache.org/docs/how-to-partition-data/

    关于hadoop - 基于时间的目录结构Apache Drill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46249110/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com