按日期的Azure blob复制分区

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

我有Azure blob存储中的文件,如下所示:

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

这个镶木地板数据得到了一个日期列,让我们把它命名为transaction_date

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

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

因此,文件将仅包含基于transaction_date的特定日期事务,以便更容易选择它们。

有没有办法使用ADF或其他Azure Stack工具?

azure parquet azure-data-factory azure-blob-storage
1个回答
1
投票

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

我们使用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 Data Factory v2 - 与上面相比,它很难(不是不可能)基于字段值进行分区。

已经说过Azure数据工厂映射数据流的公开预览 - 它使用Azure Databricks进行计算。我没有测试/或玩过你可以使用像conditional split这样的转换活动。但再次使用Databricks只是简单。

© www.soinside.com 2019 - 2024. All rights reserved.