安裝雲對象存儲在磚上
磚使用戶能夠山雲磚文件對象存儲係統(DBFS)來簡化數據訪問模式為用戶不熟悉雲的概念。安裝數據不使用統一目錄,磚建議遷移遠離使用坐騎和管理數據治理和統一目錄。
磚山雲對象存儲的如何?
磚坐騎的工作區和雲之間創建一個鏈接對象存儲,這使您能夠使用熟悉的文件與雲交互對象存儲文件係統路徑相對於磚。通過創建一個本地別名下安裝工作/ mnt
目錄存儲以下信息:
雲對象存儲的位置。
司機規範連接到存儲帳戶或容器。
安全憑據訪問所需數據。
越來越多的存儲的語法是什麼?
的源
指定的URI對象存儲(並且可以編碼安全憑證)。的mount_point
指定的本地路徑/ mnt
目錄中。一些對象存儲資源支持一個可選的encryption_type
論點。對於一些訪問模式可以通過額外的配置規範作為一個字典extra_configs
。
dbutils。fs。山(源:str,mount_point:str,encryption_type:可選(str]=”“,extra_configs:可選(dict(str:str]]=沒有一個)
之前檢查與您的工作區和雲管理員配置或更改數據的增加,如不當配置可以提供無擔保您的工作區中所有用戶的訪問。
請注意
除了本文中描述的方法,您可以自動安裝的桶磚起程拓殖的提供者和databricks_mount。
卸載掛載點
卸載一個掛載點,使用以下命令:
dbutils。fs。卸載(“/ mnt / < mount-name >”)
警告
為了避免錯誤,從不修改掛載點,其他工作正在閱讀或寫作。修改掛載後,始終運行dbutils.fs.refreshMounts ()
在所有其他集群運行任何掛載傳播更新。看到refreshMounts命令(dbutils.fs.refreshMounts)。
掛載一個S3 bucket
你可以安裝一個S3 bucket磚文件係統(DBFS)是什麼?。山是一個指針指向一個S3的位置,所以在本地數據不同步。
通過集群創建掛載點之後,用戶的集群可以立即訪問掛載點。在另一個運行集群使用掛載點,您必須運行dbutils.fs.refreshMounts ()
集群上運行,使新創建掛載點。
您可以使用以下方法來掛載一個S3 bucket:
山一桶使用AWS實例配置文件
您可以管理身份驗證和授權使用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鑰匙
您可以使用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”))
山一桶的使用實例配置文件AssumeRole
政策
您必須首先配置訪問cross-account S3 bucket AssumeRole政策。
山桶而設置S3選項extraConfigs
:
dbutils。fs。山(“s3a: / / < s3-bucket-name >”,“/ mnt / < s3-bucket-name >”,extra_configs={“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”))
在S3 bucket加密數據
磚支持使用服務器端加密數據的加密。本節將介紹如何使用服務器端加密編寫文件時通過DBFS S3。磚支持亞馬遜S3-managed加密密鑰(SSE-S3)和AWS KMS-managed加密密鑰(SSE-KMS)。
使用SSE-S3寫文件
山與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
或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,運行:
dbutils。fs。把(“/ mnt /美元MountName”,“<文件內容>”)
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 >”})
沛富山ADLS Gen2或Blob存儲
你可以掛載數據在Azure存儲賬戶使用Azure Active Directory (Azure廣告)應用程序服務主體進行身份驗證。有關更多信息,請參見訪問存儲Azure的Active Directory。
重要的
磚工作區中的所有用戶能夠訪問安裝ADLS Gen2帳戶。您所使用的服務主體訪問ADLS Gen2賬戶應該隻被授予訪問ADLS Gen2賬戶;它不應該被授予訪問其他Azure資源。
當您創建一個掛載點通過一個集群,集群用戶可以立即訪問掛載點。在另一個運行集群使用掛載點,您必須運行
dbutils.fs.refreshMounts ()
集群上運行,使新創建掛載點可供使用。卸載掛載點工作是運行時可能會導致錯誤。確保生產工作不會卸載存儲的一部分處理。
使用秘密是不會自動刷新的掛載點。如果安裝存儲依賴一個秘密旋轉,期滿,或被刪除,會發生錯誤,比如
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的活動目錄的應用程序。< scope-name >
磚秘密範圍的名稱。< service-credential-key-name >
的名稱包含客戶的關鍵秘密。< directory-id >
與目錄(租戶)IDAzure的活動目錄的應用程序。<容器名稱>
與容器的名字ADLS Gen2存儲賬戶。< storage-account-name >
與ADLS Gen2存儲帳戶名稱。< mount-name >
與在DBFS打算掛載點的名稱。