连接到Amazon S3

本文阐述了如何连接到AWS S3砖。

砖建议使用统一的目录外部地点连接到S3。

连接到S3与统一目录

外部位置和存储凭证在S3中允许统一目录读取和写入数据代表的用户。管理员主要使用外部位置配置统一目录外部表

存储凭证是一个统一的目录S3对象用于身份验证。这是一个我角色授权读取或写入一个S3 bucket的道路。外部的位置是一个对象,结合了云存储路径和存储凭证。

谁能管理外部位置和存储凭证?

AWS用户创建我的角色存储凭证必须:

  • 是一个AWS帐户用户与权限创建或更新我的角色,我的政策,S3 bucket和cross-account信任关系。

砖用户创建存储凭证统一目录必须:

  • 是一个砖账户管理。

砖用户创建外部位置在统一目录必须:

  • 是一个metastore管理员或用户创建外部位置特权。

在您创建一个外部位置统一目录,你可以可以授予以下权限:

  • 创建

  • 文件

  • 文件

这些使砖用户访问数据的权限管理云存储在S3中没有凭据进行身份验证。

有关更多信息,请参见管理外部位置和存储凭证

访问S3 bucket统一目录外的位置

使用完全限定的S3的URI来访问数据安全与统一目录。由于统一权限管理目录,您不需要传递任何附加选项或配置进行身份验证。

警告

统一目录访问数据时忽略了火花配置设置由外部的位置。

阅读的例子:

dbutilsfsls(“s3: / /桶/外部位置的路径/ /数据”)火花格式(“铺”)负载(“s3: / /桶/外部位置的路径/ /数据”)火花sql(“SELECT * FROM parquet. s3: / /桶/外部位置的/道路/ /数据的“)

写作的例子:

dbutilsfsmv(“s3: / /桶/外部位置的路径/ /数据”,“s3: / /桶/外部位置的路径/ /新位置”)df格式(“铺”)保存(“s3: / /桶/外部位置的路径/ /新位置”)

创建外部表的例子:

df选项(“路径”,“s3: / /桶/外部位置的路径/ /表”)saveAsTable(“my_table”)火花sql(”“”创建表my_table位置“s3: / /桶/外部位置的路径/ /表”(SELECT *从parquet. s3: / /桶/外部位置的/道路/ /数据”)”“”)

使用实例配置文件访问S3 bucket

可以加载我的角色在砖和附加实例配置文件的配置文件实例集群控制数据访问S3。砖时建议使用实例配置文件统一目录不可用对你的环境或工作负载。教程使用实例配置文件和数据砖,明白了S3访问配置实例配置文件

AWS用户创建我的角色必须:

  • 是一个AWS帐户用户与权限创建或更新我的角色,我的政策,S3 bucket和cross-account信任关系。

砖用户添加我作为一个实例配置文件在砖必须:

  • 是一个工作空间管理

一旦实例配置文件添加到您的工作空间,您可以授予用户,组,或服务主体权限启动集群实例配置文件。看到在砖管理实例配置文件访问

使用两个集群访问控制和笔记本一起访问控制保护访问实例配置文件。看到集群访问控制工作区对象访问控制

访问S3 bucket uri和AWS键

你可以设置属性来配置一个火花AWS访问S3键。

砖建议使用秘密的范围来存储所有的凭证。能给予用户、服务主体和组织您的工作区中获得阅读的秘密范围。这保护了AWS关键,同时允许用户访问S3。创建一个秘密范围,明白了秘密的范围

凭证可以局限于集群或笔记本。使用两个集群访问控制和笔记本一起访问控制保护访问S3。看到集群访问控制工作区对象访问控制

设置火花属性,使用以下代码片段在集群的火花配置设置存储在AWS键秘密范围作为环境变量:

AWS_SECRET_ACCESS_KEY={{秘密/范围/aws_secret_access_key}}AWS_ACCESS_KEY_ID={{秘密/范围/aws_access_key_id}}

然后您可以读取S3使用以下命令:

aws_bucket_name=“my-s3-bucket”df=火花负载(f“s3a: / /{aws_bucket_name}/花/δ/”)显示(df)dbutilsfsls(f“s3a: / /{aws_bucket_name}/”)

访问S3与开源Hadoop选项

砖运行时支持配置S3A文件系统使用开源Hadoop选项。您可以配置全局属性和一桶属性。

全局配置

#全球S3配置spark.hadoop.fs.s3a.aws.credentials。供应商< aws-credentials-provider-class >spark.hadoop.fs.s3a。端点< aws-endpoint >spark.hadoop.fs.s3a。server-side-encryption-algorithm SSE-KMS

一桶配置

你配置一桶属性使用语法spark.hadoop.fs.s3a.bucket。< bucket名>。<配置键>。这允许您设置桶与不同的凭证,端点,等等。

例如,除了全球S3设置您可以配置每个桶分别使用以下键:

#设置身份验证和端点为一个特定的桶spark.hadoop.fs.s3a.bucket。< bucket名> .aws.credentials。供应商< aws-credentials-provider-class >spark.hadoop.fs.s3a.bucket。< bucket名>。端点< aws-endpoint >#配置不同的公里加密密钥为一个特定的桶spark.hadoop.fs.s3a.bucket。< bucket名> .server-side-encryption。关键< aws-kms-encryption-key >

访问请求者支付桶

可以用来访问请求者支付桶,添加以下行集群火花配置:

spark.hadoop.fs.s3a.requester-pays。使真正的

请注意

砖不支持三角洲湖写入请求者支付桶。

从砖弃用模式来存储和访问数据

以下是弃用存储模式:

重要的

  • S3A文件系统启用默认缓存和释放资源的FileSystem.close ()”。为了避免其他线程使用缓存的引用文件系统错误,没有明确使用“FileSystem.close ()。

  • S3A文件系统不移除目录标记时关闭输出流。遗留应用程序基于Hadoop版本不包括hadoop - 13230可以误解他们即使里面有文件为空目录。