在 PySpark 中编写增量表时如何使用 Zorder 聚类?

con*_*con 2 apache-spark apache-spark-sql pyspark databricks

我正在尝试按照我在https://databricks.com/blog/2018/07/31/processing-petabytes-of-data-in-seconds-with-databricks- 中看到的建议编写一个非常大的 PySpark 数据帧- delta.html

但是,此页面显示了 Scala 中的建议,我不知道如何将其转换为 PySpark

我看到这样的 Scala 代码:

spark.read.table(connRandom)
     .write.format("delta").saveAsTable(connZorder)

sql(s"OPTIMIZE $connZorder ZORDER BY (src_ip, src_port, dst_ip, dst_port)")
Run Code Online (Sandbox Code Playgroud)

但是我该如何做相当于第二行的事情,比如在 PySpark 的特定列“my_col”上对 zorder 集群说?

小智 5

第二行是 Scala 给出的 SQL 命令。您可以在 python 中使用spark.sql("OPTIMIZE tableName ZORDER BY (my_col)").

另请查看文档,它有一个完整的 PySpark 笔记本示例。

  • 有没有办法写入已经按 z 顺序排列的文件?我的理解是,通过这种方式,您首先编写文件,然后对它们进行 z 排序。如果可以直接进行 z 排序不是更快吗?显然只是处于覆盖模式。 (6认同)