从 Azure Synapse Notebook 工作,我按照以下命令使用LinkedServiceA安装了 ADLS Gen2 文件夹,
mssparkutils.fs.mount(
"abfss://<CONTAINER>@<STORAGENAME>.dfs.core.windows.net/", #ADLS GEN 2 PATH
"/adlsmount", #Mount Point Name
{ "linkedService" : "<REPLACE LINKED SERVICE NAME>"})
我正在尝试使用本地文件系统 API 访问挂载路径,如下所示。
文件夹结构类似于container/team/SALES/BILLING/YEAR。
用于创建装载的LinkedServiceA只能访问 SALES 及其子文件夹。
import os
jobId = mssparkutils.env.getJobId()
synfs_bill_path = f'synfs:/{jobId}/adlsmount/team/SALES/BILLING/YEAR' #SYNFS
local_bill_path= f'/synfs/{jobId}/adlsmount/team/SALES/BILLING/YEAR' #Local File System
mssparkutils.fs.ls(synfs_bill_path) #this is working
bills = os.listdir(local_bill_path) #this is failing with permission denied error
但我能够使用 os lib 使用本地文件系统 API 路径列出所有父目录
local_base_path= f'/synfs/{jobId}/adlsmount/team/SALES/'
bills = os.listdir(local_base_path) #this is working,
print(bills ) #lists "BILLING" folder
错误信息
PermissionError: [Errno 13] Permission denied: '/synfs/152/adlsmount/team/SALES/BILLING/YEAR'
Traceback (most recent call last):
使用 synfs_bill_path 的 Spark API 也可以正常工作。我想处理 SALES/BILLING/YEAR 中的大量小文件以减少文件数量。(大量文件导致 spark 读取失败)