【问题标题】:Optimize a Delta table used to make queries that are made are GROUP BY优化用于进行查询的 Delta 表是 GROUP BY
【发布时间】:2022-08-18 18:02:21
【问题描述】:

在 Delta 表中工作。 在优化我的增量表时,我学到了一些东西。

Partition by: 在“where”条件下使用进行分区的列时很有用。 即在上一步中。假设这是表 A

df.write.partitionBy(\"column_1\").format(\"delta\").mode(\"overwrite\").save(\"path\")

我以后会像这样使用Delta表。

%sql
select 
    colum1
    column2
    ...
from TableA
where column1 = \"XX\"

Bloom Filters: 有利于表之间的连接。想象 column_1 是我们的 id 列,所以你会以这种方式使用它

%sql

CREATE BLOOMFILTER INDEX ON TABLE TableA FOR COLUMNS(column_1)
OPTIMIZE TableA  ZORDER BY (column_1)


select 
    colum1
    column2
    ...
from TableA a
INNER JOIN  TableB b
ON  a.column_1 = b.column_1

但是,如何优化要使用 Group by 查询且未应用 Partition By 或 Bloom Filter 等优化技术的表?即该表将按如下方式使用

%sql
select 
   colum1
   column2
   ...
from TableA
group by (column1, column2)

提前致谢

    标签: apache-spark-sql delta-lake databricks-sql


    【解决方案1】:

    OPTIMIZE ... ZORDER BY (column1, column2) 可能有助于将相关值并置在较少数量的文件中,并使数据查询更加高效。 (见doc

    【讨论】:

      猜你喜欢
      • 2011-08-29
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 2020-05-16
      • 2019-08-16
      相关资源
      最近更新 更多