ASH*_*ASH 5 python scala azure-data-lake databricks azure-databricks
我正在尝试获取文件夹中所有文件的清单,该文件夹有几个子文件夹,所有这些子文件夹都位于数据湖中。这是我正在测试的代码。
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)
Run Code Online (Sandbox Code Playgroud)
我还尝试了此链接中的示例代码:
我在 Azure Databricks 工作。我愿意使用 Scala 来完成这项工作。到目前为止,没有什么对我有用。每次,我都会得到一个空的数据框。我相信这很接近,但我一定错过了一些小事。想法?
Databricks 文件系统 (DBFS) 是安装到 Azure Databricks 工作区中的分布式文件系统,可在 Azure Databricks 群集上使用。如果您使用本地文件 API,则必须引用 Databricks 文件系统。Azure Databricks 使用 FUSE mount / dbfs 配置每个群集节点,允许在群集节点上运行的进程使用本地文件 API 读取和写入底层分布式存储层(另请参阅文档)。
所以在路径/dbfs : 必须包括:
root = "/dbfs/mnt/rawdata/parent/"
Run Code Online (Sandbox Code Playgroud)
这与使用Databricks 文件系统实用程序 (DBUtils) 不同。文件系统实用程序访问 Databricks 文件系统,从而可以更轻松地将 Azure Databricks 用作文件系统:
dbutils.fs.ls("/mnt/rawdata/parent/")
Run Code Online (Sandbox Code Playgroud)
对于更大的数据湖,我可以在知识库中推荐一个 Scala 示例。优点是它为所有分发的子叶运行列表,因此也适用于更大的目录。
我让这个工作。
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)
Run Code Online (Sandbox Code Playgroud)
唯一的先决条件是您需要导入azure.storage. 因此,在 Clusters 窗口中,单击“Install-New”-> PyPI > package = 'azure.storage'。最后,单击“安装”。
| 归档时间: |
|
| 查看次数: |
8958 次 |
| 最近记录: |