gpt4 book ai didi

按日期的 Azure Blob 复制分区

转载 作者:行者123 更新时间:2023-12-02 23:44:08 26 4
gpt4 key购买 nike

我的 Azure Blob 存储中有这样的文件:

entity
|- part001.parquet
|- part002.parquet
|- part003.parquet
|- part004.parquet
...

这个 parquet 数据有一个日期列,我们将其命名为 transaction_date

我想创建一个 Azure 数据工厂管道,将所有这些数据迁移到另一个 Blob 存储中,如下所示:

entity
|- YYYY
|-MM
|- entity_YYYYMMDD.parquet
...
|- YYYY
|-MM
|- entity_YYYYMMDD.parquet
...

因此,这些文件将仅包含基于 transaction_date 的特定日期交易,以便之后更容易选择它们。

有什么方法可以使用 ADF 或其他 Azure Stack 工具来执行此操作吗?

最佳答案

您追求的是动态分区或基于字段/列值的分区。

我们使用 Azure Databricks 来处理此类事情,如果需要重复,则通过 azure 数据工厂 v2 安排笔记本。在笔记本中,您可以有一个 pyspark 脚本,如下所示(请注意,此代码只是一个未经测试的模式)

extractData = spark.read.parquet("<<<input blob storage path>>>")

extractData = extractData\
.withColumn("transaction_year", year("transaction_date"))\
.withColumn("transaction_month", month("transaction_date"))

extractData.write.mode("overwrite") \
.partitionBy("transaction_year", "transaction_month") \
.parquet("<<<output blob storage path>>>")

我们可以只使用 Azure 数据工厂吗?假设您使用的是 Azure 数据工厂 v2 - 与上面相比,很难(并非不可能)基于字段值进行分区。

话虽如此,Azure 数据工厂映射数据流有公共(public)预览版 - 在幕后它使用 Azure Databricks 进行计算。我还没有测试/或玩过,也许你可以使用类似 conditional split 的转换事件。但再次强调,使用 Databricks 非常简单。

关于按日期的 Azure Blob 复制分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55464883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com