開始
用戶指南
管理指南
參考指南
資源
2022年10月07日更新
給我們反饋
磚使用戶能夠山雲磚文件對象存儲係統(DBFS)來簡化數據訪問模式為用戶不熟悉雲的概念。安裝數據不使用統一目錄,磚建議遷移遠離使用坐騎和管理數據治理和統一目錄。
磚坐騎的工作區和雲之間創建一個鏈接對象存儲,這使您能夠使用熟悉的文件與雲交互對象存儲文件係統路徑相對於磚。通過創建一個本地別名下安裝工作/ mnt目錄存儲以下信息:
/ mnt
雲對象存儲的位置。
司機規範連接到存儲帳戶或容器。
安全憑據訪問所需數據。
的源指定的URI對象存儲(並且可以編碼安全憑證)。的掛載點指定的本地路徑/ mnt目錄中。一些對象存儲資源支持一個可選的encryptionType論點。對於一些訪問模式可以通過額外的配置規範作為一個字典extraConfigs。
源
掛載點
encryptionType
extraConfigs
山(源:str,掛載點:str,encryptionType:可選(str]=”“,extraConfigs:可選(dict(str:str]]=沒有一個)
之前檢查與您的工作區和雲管理員配置或更改數據的增加,如不當配置可以提供無擔保您的工作區中所有用戶的訪問。
請注意
除了本文中描述的方法,您可以自動安裝的桶磚起程拓殖的提供者和databricks_mount。
卸載一個掛載點,使用以下命令:
dbutils。fs。卸載(“/ mnt / < mount-name >”)
重要的
卸載掛載點工作是運行時可能會導致錯誤。確保生產工作不會卸載存儲的一部分處理。
你可以安裝一個S3 bucket磚文件係統(DBFS)是什麼?。山是一個指針指向一個S3的位置,所以在本地數據不同步。
通過集群創建掛載點之後,用戶的集群可以立即訪問掛載點。在另一個運行集群使用掛載點,您必須運行dbutils.fs.refreshMounts ()集群上運行,使新創建掛載點。
dbutils.fs.refreshMounts ()
您可以使用以下方法來掛載一個S3 bucket:
山一桶使用AWS實例配置文件
山一桶使用AWS鑰匙
山一桶的使用實例配置文件AssumeRole政策
AssumeRole
您可以管理身份驗證和授權使用AWS S3 bucket實例配置文件。訪問對象的桶是由權限授予實例配置文件。如果這個角色有寫訪問,掛載點的用戶可以編寫桶中的對象。如果這個角色有讀訪問,掛載點的用戶將能夠閱讀桶中的對象。
配置您的集群實例配置文件。
鬥山。
aws_bucket_name=“< aws-bucket-name >”mount_name=“< mount-name >”dbutils。fs。山(f“s3a: / /{aws_bucket_name}”,f“/ mnt /{mount_name}”)顯示(dbutils。fs。ls(f“/ mnt /{mount_name}”))
瓦爾AwsBucketName=“< aws-bucket-name >”瓦爾MountName=“< mount-name >”dbutils。fs。山(“s3a: / /美元AwsBucketName”,“/ mnt /美元MountName”)顯示(dbutils。fs。ls(“/ mnt /美元MountName”))
您可以使用AWS山一桶的鑰匙。
當你安裝一個S3 bucket使用鑰匙,所有用戶讀和寫訪問嗎所有對象S3 bucket。
下麵的例子使用磚秘密存儲鍵。你URL必須逃跑秘密密鑰。
access_key=dbutils。秘密。得到(範圍=“aws”,關鍵=“aws-access-key”)secret_key=dbutils。秘密。得到(範圍=“aws”,關鍵=“aws-secret-key”)encoded_secret_key=secret_key。取代(“/”,”% 2 f”)aws_bucket_name=“< aws-bucket-name >”mount_name=“< mount-name >”dbutils。fs。山(f“s3a: / /{access_key}:{encoded_secret_key}@{aws_bucket_name}”,f“/ mnt /{mount_name}”)顯示(dbutils。fs。ls(f“/ mnt /{mount_name}”))
瓦爾AccessKey=dbutils。秘密。得到(範圍=“aws”,關鍵=“aws-access-key”)/ /編碼秘密密鑰,可以包含“/”瓦爾SecretKey=dbutils。秘密。得到(範圍=“aws”,關鍵=“aws-secret-key”)瓦爾EncodedSecretKey=SecretKey。取代(“/”,“% 2 f”)瓦爾AwsBucketName=“< aws-bucket-name >”瓦爾MountName=“< mount-name >”dbutils。fs。山(“s3a: / /美元AccessKey:美元EncodedSecretKey@美元AwsBucketName”,“/ mnt /美元MountName”)顯示(dbutils。fs。ls(“/ mnt /美元MountName”))
您必須首先配置安全訪問S3 bucket跨帳戶使用實例配置文件和一個AssumeRole政策。
山桶而設置S3選項extraConfigs:
dbutils。fs。山(“s3a: / / < s3-bucket-name >”,“/ mnt / < s3-bucket-name >”,extraConfigs={“fs.s3a.credentialsType”:“AssumeRole”,“fs.s3a.stsAssumeRole.arn”:“攻擊:aws:我::< bucket-owner-acct-id >: / MyRoleB”角色,“fs.s3a.canned.acl”:“BucketOwnerFullControl”,“fs.s3a.acl.default”:“BucketOwnerFullControl”})
dbutils。fs。山(“s3a: / / < s3-bucket-name >”,“/ mnt / < s3-bucket-name >”,extraConfigs=地圖(“fs.s3a.credentialsType”- >“AssumeRole”,“fs.s3a.stsAssumeRole.arn”- >“攻擊:aws:我::< bucket-owner-acct-id >: / MyRoleB”角色,“fs.s3a.canned.acl”- >“BucketOwnerFullControl”,“fs.s3a.acl.default”- >“BucketOwnerFullControl”))
磚支持使用服務器端加密數據的加密。本節將介紹如何使用服務器端加密編寫文件時通過DBFS S3。磚支持亞馬遜S3-managed加密密鑰(SSE-S3)和AWS KMS-managed加密密鑰(SSE-KMS)。
山與SSE-S3 S3 bucket,運行以下命令:
dbutils。fs。山(“s3a: / /美元AccessKey:美元SecretKey@美元AwsBucketName”,“/ mnt /美元MountName”,“sse-s3”)
寫文件到相應的S3 bucket SSE-S3,運行:
dbutils。fs。把(“/ mnt /美元MountName”,“<文件內容>”)
山源目錄傳入sse-kms或sse-kms: $ KmsKey作為加密類型。
sse-kms
sse-kms: $ KmsKey
增加你的S3 bucket SSE-KMS使用默認公裏主鍵,運行:
dbutils。fs。山(“s3a: / /美元AccessKey:美元SecretKey@美元AwsBucketName”,“/ mnt /美元MountName”,“sse-kms”)
增加你的S3 bucket SSE-KMS使用特定公裏鍵,運行:
dbutils。fs。山(“s3a: / /美元AccessKey:美元SecretKey@美元AwsBucketName”,“/ mnt /美元MountName”,“sse-kms: KmsKey美元”)
寫文件與SSE-KMS S3 bucket,運行:
如果你打算寫一個給定表存儲在S3中同時從多個集群或工作負載,磚建議你配置數據磚S3提交服務。你的筆記本代碼必須裝入桶和添加AssumeRole配置。這一步是必要的隻有DBFS坐騎,不是用於訪問根DBFS存儲在您的工作區內的根S3 bucket。下麵的例子使用Python:
#如果其他代碼已經登上鬥不使用新的角色,先卸載它dbutils。fs。卸載(“/ mnt / < mount-name >”)#掛載桶和承擔新的角色dbutils。fs。山(“s3a: / / < bucket名> /”,“/ mnt / < mount-name >”,extra_configs={“fs.s3a.credentialsType”:“AssumeRole”,“fs.s3a.stsAssumeRole.arn”:“< role-arn >”})
你可以掛載數據在Azure存儲賬戶使用Azure Active Directory (Azure廣告)應用程序服務主體進行身份驗證。有關更多信息,請參見配置訪問Azure存儲Azure活動目錄服務主體。
磚工作區中的所有用戶能夠訪問安裝ADLS Gen2帳戶。您所使用的服務主體訪問ADLS Gen2賬戶應該隻被授予訪問ADLS Gen2賬戶;它不應該被授予訪問其他Azure資源。
當您創建一個掛載點通過一個集群,集群用戶可以立即訪問掛載點。在另一個運行集群使用掛載點,您必須運行dbutils.fs.refreshMounts ()集群上運行,使新創建掛載點可供使用。
使用秘密是不會自動刷新的掛載點。如果安裝存儲依賴一個秘密旋轉,期滿,或被刪除,會發生錯誤,比如401年未經授權的。解決這樣一個錯誤,你必須卸載並重新安裝存儲。
401年未經授權的
運行以下你的筆記本進行身份驗證並創建一個掛載點。
配置={“fs.azure.account.auth.type”:“OAuth”,“fs.azure.account.oauth.provider.type”:“org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider”,“fs.azure.account.oauth2.client.id”:“<應用程序id >”,“fs.azure.account.oauth2.client.secret”:dbutils。秘密。得到(範圍=“< scope-name >”,關鍵=“< service-credential-key-name >”),“fs.azure.account.oauth2.client.endpoint”:“https://login.microsoftonline.com/ < directory-id > / oauth2 /令牌”}#可選地,您可以添加<目錄名稱>源URI的掛載點。dbutils。fs。山(源=“abfss: / / <容器名稱> @ < storage-account-name >.dfs.core.windows.net/”,mount_point=“/ mnt / < mount-name >”,extra_configs=配置)
瓦爾配置=地圖(“fs.azure.account.auth.type”- >“OAuth”,“fs.azure.account.oauth.provider.type”- >“org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider”,“fs.azure.account.oauth2.client.id”- >“<應用程序id >”,“fs.azure.account.oauth2.client.secret”- >dbutils。秘密。得到(範圍=“< scope-name >”,關鍵=“< service-credential-key-name >”),“fs.azure.account.oauth2.client.endpoint”- >“https://login.microsoftonline.com/ < directory-id > / oauth2 /令牌”)/ /可選地,您可以添加<目錄名稱>源URI的掛載點。dbutils。fs。山(源=“abfss: / / <容器名稱> @ < storage-account-name >.dfs.core.windows.net/”,掛載點=“/ mnt / < mount-name >”,extraConfigs=配置)
取代
<應用程序id >與應用程序(客戶端)IDAzure的活動目錄的應用程序。
<應用程序id >
< scope-name >磚秘密範圍的名稱。
< scope-name >
< service-credential-key-name >的名稱包含客戶的關鍵秘密。
< service-credential-key-name >
< directory-id >與目錄(租戶)IDAzure的活動目錄的應用程序。
< directory-id >
<容器名稱>與容器的名字ADLS Gen2存儲賬戶。
<容器名稱>
< storage-account-name >與ADLS Gen2存儲帳戶名稱。
< storage-account-name >
< mount-name >與在DBFS打算掛載點的名稱。
< mount-name >