具有液体集群的 Pyspark

问题描述 投票:0回答:1

我有一个存储在 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)修改现有数据框?

提前致谢。

apache-spark pyspark apache-spark-sql
1个回答
0
投票

您可以使用以下语法在现有未分区的 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()
© www.soinside.com 2019 - 2024. All rights reserved.