0

从 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 读取失败)

4

1 回答 1

0

我试图在我的实验室环境中重现您的代码,并且您的代码工作正常,对我来说没有任何错误。

在此处输入图像描述

当您尝试在没有必要权限的情况下访问路径时,通常会看到 Permission denied [Errno 13]。请确保用户拥有所有必要的权限。

于 2022-01-19T13:23:35.360 回答