我有一个存储在 Azure 存储中的现有数据帧。 如何在其上启用液体聚类?
我尝试做这样的事情:
df.write.format("delta") \
.option("overwriteSchema", "true") \
.mode("overwrite") \
.clusterBy("somecol") \
.save(azure_url)
但出现错误:
AttributeError: 'DataFrameWriter' object has no attribute 'clusterBy'
是否可以使用 pyspark(甚至 Delta Lake api)修改现有数据框?
提前致谢。
您可以使用以下语法在现有未分区的 Delta 表上启用液体集群:
ALTER TABLE <table_name>
CLUSTER BY (<clustering_columns>)
查看 Azure 文档,了解有关 Liquid 集群的更多详细信息。
如此处所述:
在 Databricks Runtime 14.2 及更高版本中,您可以使用 Python 或 Scala 中的 DataFrame API 和 DeltaTable API 来启用液体聚类。
您可以按照以下方式进行:
# Create an empty table
(DeltaTable.create()
.tableName("table1")
.addColumn("col0", dataType = "INT")
.addColumn("col1", dataType = "STRING")
.clusterBy("col0")
.execute())
# Using a CTAS statement
df = spark.read.table("table1")
df.write.format("delta").clusterBy("col0").saveAsTable("table2")
# CTAS using DataFrameWriterV2
df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()