我有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 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只是简单。