将多个分区规范写入 Apache Iceberg 表

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

我想编写一个具有与默认表设置不同的分区规范的 Iceberg 表,以便当我运行数据压缩时,数据将根据默认规范进行压缩(尽可能使用

write-format
配置)

例如:

df.writeStream
  .format("iceberg")
  .outputMode("append")
  .options(Map("path" ->tableIdentifier,
                  "checkpointLocation" -> checkpointLocation,
                  "fanout-enabled" -> "true",
                   "spec-id" ->"3"))

理论上,应该没问题,因为 Iceberg 知道如何处理多个分区规范,如此处分区进化中提到的。 实际上,我还没有找到办法。

有什么办法可以实现这个目标吗?

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

根据文档流写入,我认为您在写入流时无法指定分区。也许您可以尝试在写入之前添加新的分区字段,使用适用于 Spark 3.x 的ALTER TABLE SQL 扩展

ALTER TABLE tmp.db.sample ADD PARTITION FIELD years(date)

对于 批量写入,现在使用 Spark 3 新的

partitionBy
API 在
DataFrameWriterV2
中支持分区表达式:

data.writeTo("tmp.db.table")
    .tableProperty("write.format.default", "orc")
    .partitionBy($"level", days($"ts"))
    .createOrReplace()
© www.soinside.com 2019 - 2024. All rights reserved.