【问题标题】:Overwrite specific partitions in spark dataframe write method with Delta format使用 Delta 格式覆盖 spark 数据帧写入方法中的特定分区
【发布时间】:2022-10-05 16:18:22
【问题描述】:

使用 Parquet 格式时,可以通过以下设置覆盖特定分区, 不影响其他分区文件夹中的数据

spark.conf.set(\"spark.sql.sources.partitionOverwriteMode\",\"dynamic\")

data.toDF().write.mode(\"overwrite\").format(\"parquet\").partitionBy(\"date\", \"name\").save(\"abfss://path/to/somewhere\")

但这不适用于 Databricks 中的 Delta 格式。 让我知道如何以增量格式处理此问题

    标签: apache-spark databricks azure-databricks delta-lake


    【解决方案1】:

    在存储帐户和 azure Databricks 之间创建挂载,它将创建增量存储位置。请遵循以下语法。

    dbutils.fs.mount(
        source = "wasbs://<container_name>@<Storage_Account_Name>.blob.core.windows.net/",
        mount_point = "/mnt/<Mount_name>",
        extra_configs = {"fs.azure.account.key.<Storage_Account_Name>.blob.core.windows.net":"<Azure_Storage_Access_key>"})
        
    

    然后,将架构 df 附加到写入选项,具体取决于架构提及使用 partitionBy 。最后将数据保存在创建 delta table 的 Mount 位置。

    如果您想阅读 delta 甲酸盐,只需更改 .formate("delta")

    spark.conf.set("spark.sql.sources.partitionOverwriteMode","dynamic")
    df2=df.write.option("header",True).partitionBy("DateID","MedallionID").mode("overwrite").format("parquet").save("/mnt/dem123")
    

    【讨论】:

    • 嗨@Sridhar,它解决了你的问题吗?
    猜你喜欢
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 2020-06-29
    • 2022-11-30
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多