Вывести список всех файлов в папке, находящейся в озере данных - PullRequest
1 голос
/ 07 ноября 2019

Я пытаюсь получить список всех файлов в папке, которая имеет несколько подпапок, все из которых находятся в озере данных. Вот код, который я тестирую.

import sys, os
import pandas as pd

mylist = []
root = "/mnt/rawdata/parent/"
path = os.path.join(root, "targetdirectory") 

for path, subdirs, files in os.walk(path):
    for name in files:
        mylist.append(os.path.join(path, name))


df = pd.DataFrame(mylist)
print(df)

Я также попробовал пример кода по этой ссылке:

Каталог, подкаталог и файлы списка Python

Я работаю в Azure Databricks. Я открыт для использования Scala для выполнения этой работы. Пока что у меня ничего не получилось. Каждый раз я получаю пустой фрейм данных. Я считаю, что это довольно близко, но я, должно быть, упускаю что-то маленькое. Мысли?

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Файловая система блоков данных (DBFS) - это распределенная файловая система, смонтированная в рабочей области Azure Databricks и доступная в кластерах Azure Databricks. Если вы используете локальный файловый API, вы должны ссылаться на файловую систему Databricks. Azure Databricks настраивает каждый узел кластера с помощью монтирования FUSE / dbfs , которое позволяет процессам, работающим на узлах кластера, выполнять чтение и запись в базовый уровень распределенного хранилища с помощью локальных файловых API (см. Также документацию ).

Таким образом, в путь должен быть включен / dbfs ::

root = "/dbfs/mnt/rawdata/parent/"

Это отличается от работы с Утилита файловой системы Databricks (DBUtils). Утилиты файловой системы обращаются к Файловой системе Databricks, упрощая использование блоков данных Azure в качестве файловой системы:

dbutils.fs.ls("/mnt/rawdata/parent/")

Для больших озер данных я могу порекомендовать пример Scala в База знаний ,Преимущество состоит в том, что он запускает распечатку для всех распределенных дочерних листов, поэтому будет работать и для больших каталогов.

0 голосов
/ 11 ноября 2019

Я получил это на работу.

from azure.storage.blob import BlockBlobService 

blob_service = BlockBlobService(account_name='your_account_name', account_key='your_account_key')

blobs = []
marker = None
while True:
    batch = blob_service.list_blobs('rawdata', marker=marker)
    blobs.extend(batch)
    if not batch.next_marker:
        break
    marker = batch.next_marker
for blob in blobs:
    print(blob.name)

Единственным условием является то, что вам нужно импортировать azure.storage. Итак, в окне Clusters нажмите «Install-New» -> PyPI> package = «azure.storage». Наконец, нажмите «Установить».

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