安装云对象存储在砖上
砖使用户能够山云砖文件对象存储系统(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打算挂载点的名称。