Копирование BLOB-объектов Azure по дате - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть файлы в хранилище BLOB-объектов Azure , например:

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

и эти данные паркета получили столбец даты, назовем его transaction_date

Я хочу создать конвейер фабрики данных Azure для переноса всех этих данных в другое хранилище больших двоичных объектов, например:

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

Таким образом, файлы будут содержать только транзакции с определенной датой, основанные на transaction_date, чтобы было прощечтобы выбрать их после.

Есть ли способ сделать это с помощью ADF или другого инструмента стека Azure?

1 Ответ

1 голос
/ 02 апреля 2019

Что вам нужно, это динамический раздел или раздел на основе значения поля / столбца.

Мы используем блоки данных Azure для обработки таких вещей, и, если необходимо повторять их, запланируйте записную книжку с помощью фабрики данных 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 просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...