Файлы паркетных разделов на Azure Blob (пиарроу) - PullRequest
0 голосов
/ 30 октября 2019

Я вручную разбивал файлы на панды (создавая индекс или мультииндекс, а затем записывал отдельный файл паркета для каждого индекса в цикле) в BLOB-объект Azure.

Однако при чтении документов дляPyarrow, я вижу, что можно создать «набор данных», который включает в себя структуру папок для секционированных данных. https://arrow.apache.org/docs/python/parquet.html

Пример для папки Monthly / daily - это именно то, чего я пытаюсь достичь.

dataset_name/
  year=2007/
    month=01/
       0.parq
       1.parq
       ...
    month=02/
       0.parq
       1.parq
       ...
    month=03/
    ...
  year=2008/
    month=01/
    ...



fs = pa.hdfs.connect(host, port, user=user, kerb_ticket=ticket_cache_path)
pq.write_to_dataset(table, root_path='dataset_name',
                    partition_cols=['one', 'two'], filesystem=fs)

Могу ли я сделать это с помощью Azure Blob (или Minio, который использует S3 и оберткичерез хранилище BLOB-объектов Azure)? Моя конечная цель - читать только те файлы, которые имеют смысл для моего «запроса».

1 Ответ

0 голосов
/ 31 октября 2019

По моему опыту и исходя из вашей текущей среды Linux на виртуальной машине Azure, я думаю, что есть два решения для чтения файлов паркетных разделов из хранилища Azure.

  1. Следуйте разделу Reading a Parquet File from Azure Blob storage документа Reading and Writing the Apache Parquet Format из pyarrow, чтобы вручную перечислить имена BLOB-объектов с префиксом, таким как dataset_name, используя API list_blob_names(container_name, prefix=None, num_results=None, include=None, delimiter=None, marker=None, timeout=None) Azure Storgae SDK для Python какна рисунке ниже, затем для чтения этих BLOB-объектов один за другим, как пример кода, в кадры данных, наконец, concat эти кадры данных в один.

    enter image description here

  2. Попробуйте использовать Azure/azure-storage-fuse для монтирования контейнера хранилища BLOB-объектов Azure в файловую систему Linux, тогда вам просто нужно следовать разделу документа Reading from Partitioned Datasets для локального чтения набора данных из хранилища BLOB-объектов Azure.

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