你考慮過使用會話作用域而不是集群範圍?我有一個函數存儲在數據磚。功能。azure。py做這個:
從pyspark。sql進口SparkSession def set_session_scope(範圍:str client_id: str, client_secret: str, tenant_id: str, storage_account_name: str, container_name: str) - > str:”“”連接到azure關鍵庫,進行身份驗證,並設置引發會話使用指定的服務主體為讀/寫adls Args:範圍:azure密鑰庫範圍名稱client_id:密鑰名秘密的客戶機id client_secret:密鑰名秘密的客戶秘密tenant_id:密鑰名秘密的承租者id storage_account_name:存儲賬戶資源的名稱從container_name讀/寫:容器資源存儲賬戶的名稱從回報:讀/寫火花配置得到適當的設置abfs_path(字符串):abfss: / /路徑存儲賬戶和容器”“火花= SparkSession.builder.getOrCreate()嚐試:從pyspark。dbutils進口dbutils dbutils = dbutils(火花)除了ImportError:進口IPython dbutils = IPython.get_ipython ()。user_ns (“dbutils”) client_id = dbutils.secrets。得到(範圍=範圍、關鍵= client_id) client_secret = dbutils.secrets。得到(=範圍,範圍鍵= client_secret) tenant_id = dbutils.secrets。得到(範圍=範圍、關鍵= tenant_id) spark.conf.set (f“fs.azure.account.auth.type。.dfs.core.windows.net {storage_account_name}”,“OAuth”) spark.conf.set (f“fs.azure.account.oauth.provider.type。.dfs.core.windows.net {storage_account_name}”,“org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider”) spark.conf.set (f“fs.azure.account.oauth2.client.id。.dfs.core.windows.net {storage_account_name}”, client_id) spark.conf.set (f“fs.azure.account.oauth2.client.secret。.dfs.core.windows.net {storage_account_name}”, client_secret) spark.conf.set (f“fs.azure.account.oauth2.client.endpoint。.dfs.core.windows.net {storage_account_name}”, f“https://login.microsoftonline.com/ {tenant_id} / oauth2 /令牌”)abfs_path =“abfss: / /”+ container_name + + storage_account_name + ".dfs.core.windows.net/“@ abfs_path返回
和它的用法是這樣的:
從databricks.functions。azure進口set_session_scope #設置會話範圍和讀取源數據連接abfss client_id =“databricks-serviceprincipal-id client_secret =“databricks-serviceprincipal-secret tenant_id”=“承租者id”storage_account_name =“your-storage-account-name container_name”=“your-container-name”folder_path = " #路徑/ /文件夾/ abfs_path = set_session_scope(範圍=範圍、client_id = client_id client_secret = client_secret tenant_id = tenant_id storage_account_name = storage_account_name container_name = container_name) file_list = dbutils.fs。ls (abfs_path + folder_path)
謝謝你的回應。但在這種情況下我們必須每次執行這個函數。
我希望類似的掛載點(ADLS不幸的是磚不建議掛載點),在集群的時候創建本身我們將提供連接到我們的存儲賬戶。