【发布时间】: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