谷歌云存储
本文描述了如何使用砖读写表和数据存储在谷歌云存储(GCS)。
砖建议使用统一的编目连接GCS外部位置。或者,您可以创建一个附加服务账户,你要么把桶和服务帐户创建集群或连接到桶时直接与一个密钥生成的服务帐户
连接到GCS统一目录
外部位置和存储凭证允许统一目录读写数据GCS代表用户。管理员主要使用外部位置配置统一目录外部表。
存储凭证是一个统一的目录对象GCS用于身份验证。它是谷歌云服务帐户权限读取和写入GCS桶路径。外部的位置是一个对象,结合了云存储路径和存储凭证。
谁能管理外部位置和存储凭证?
谷歌云用户创建一个存储凭证必须:
GCP帐户是一个用户的权限授予权限阅读和写作GCS桶一个服务帐户。
砖用户创建存储凭证统一目录必须:
是一个砖账户管理。
砖用户创建外部位置在统一目录必须:
是一个metastore管理员或用户
创建外部位置
特权。
在您创建一个外部位置统一目录,你可以可以授予以下权限:
创建表
读文件
写文件
这些权限使砖GCS没有用户访问数据的云存储管理凭据进行身份验证。
有关更多信息,请参见管理外部位置和存储凭证。
访问GCS桶与统一目录外部位置
使用完全限定的GCS URI来访问数据安全与统一目录。由于统一权限管理目录,您不需要传递任何附加选项或配置进行身份验证。
警告
统一目录访问数据时忽略了火花配置设置由外部的位置。
阅读的例子:
dbutils。fs。ls(“gs: / /桶/外部位置的路径/ /数据”)火花。读。格式(“铺”)。负载(“gs: / /桶/外部位置的路径/ /数据”)火花。sql(“SELECT * FROM parquet. gs: / /桶/外部位置的/道路/ /数据的“)
写作的例子:
dbutils。fs。mv(“gs: / /桶/外部位置的路径/ /数据”,“gs: / /桶/外部位置的路径/ /新位置”)df。写。格式(“铺”)。保存(“gs: / /桶/外部位置的路径/ /新位置”)
创建外部表的例子:
df。写。选项(“路径”,“gs: / /桶/外部位置的路径/ /表”)。saveAsTable(“my_table”)火花。sql(”“”创建表my_table位置“gs: / /桶/外部位置的路径/ /表”(SELECT *从parquet. gs: / /桶/外部位置的/道路/ /数据”)”“”)
访问GCS桶集群上使用谷歌云服务帐户
您可以访问GCS桶集群上使用谷歌云服务帐户。你必须服务帐户的权限授予读和写的GCS桶。砖推荐给这个服务帐户所需的最小特权来执行其任务。然后您可以将该服务帐户关联到一个集群砖。
你可以直接连接到桶使用服务帐户的电子邮件地址(推荐方法)或一个关键服务帐户的生成。
重要的
谷歌云服务帐户必须的项目,您用来设置数据砖工作区。
GCP用户创建服务帐户角色必须:
GCP帐户是一个用户的权限创建服务帐户和授予权限角色阅读和写作GCS桶。
砖用户添加了一个集群必须的服务帐户可以管理允许在一个集群中。
步骤1:设置谷歌云服务帐户使用Google云控制台
点击我和管理在左侧导航窗格。
点击服务帐户。
点击+创建服务帐户。
输入服务帐户名称和描述。
点击创建。
点击继续。
点击完成。
导航到谷歌云控制台服务帐户列表并选择一个服务帐户。
复制相关的电子邮件地址。你需要你设置砖集群。
步骤2:配置您的GCS桶
创建一个桶
如果你不已经有一个桶中,创建一个:
点击存储在左侧导航窗格。
点击创建桶。
命名您的桶。选择一个全局唯一符合谷歌的和永久的名字命名要求GCS桶。
重要的
使用DBFS坐骑,你斗名称必须不包含下划线。
点击创建。
访问一个gc桶直接与谷歌云服务帐户的关键
直接读写一桶,你可以设置服务帐户的电子邮件地址或配置中定义的一个关键火花配置。
请注意
砖推荐使用的服务帐户的电子邮件地址,因为没有钥匙,所以没有密钥泄漏的风险。使用关键的一个原因是如果服务账户需要谷歌云项目不同的项目使用在创建工作区。使用一个服务帐户的电子邮件地址,请参阅访问GCS桶集群上使用谷歌云服务帐户。
步骤1:设置谷歌云服务帐户使用Google云控制台
您必须创建一个服务帐户的砖集群。砖推荐给这个服务帐户所需的最小特权来执行其任务。
点击我和管理在左侧导航窗格。
点击服务帐户。
点击+创建服务帐户。
输入服务帐户名称和描述。
点击创建。
点击继续。
点击完成。
步骤2:创建直接访问GCS桶的关键
警告
你生成的JSON关键服务帐户是一个私有密钥,只能共享其控制与授权用户访问数据集和资源云在你的谷歌账户。
在谷歌云控制台中,在服务帐户列表中,单击新创建的帐户。
在键部分中,点击添加键>创建新的键。
接受JSON密钥类型。
点击创建。关键文件被下载到你的电脑。
步骤4:把服务帐户砖秘密的关键
砖建议使用秘密的范围来存储所有的凭证。你可以把关键的私有密钥和私有密钥id JSON文件成砖秘密的范围。能给予用户、服务主体和组织您的工作区中获得阅读的秘密范围。这保护服务帐户关键,同时允许用户访问gc。创建一个秘密范围,明白了秘密。
第五步:配置一个砖集群
在砖的运行时版本的下拉,选择7.3 LTS或以上。
在火花配置选项卡中,使用以下代码片段设置密钥存储在秘密范围作为环境变量:
GSA_PRIVATE_KEY={{秘密/范围/ gsa_private_key}}GSA_PRIVATE_KEY_ID={{秘密/范围/ gsa_private_key_id}}spark.hadoop.google.cloud.auth.service.account。实现真正的spark.hadoop.fs.gs.auth.service.account。电子邮件< client-email >spark.hadoop.fs.gs.project。id <项目id >spark.hadoop.fs.gs.auth.service.account.private。关键GSA_PRIVATE_KEYspark.hadoop.fs.gs.auth.service.account.private.key。id GSA_PRIVATE_KEY_ID
取代
< client-email >
,<项目id >
与这些确切的值字段名称从你关键的JSON文件。
步骤6:从GCS读取
阅读的GCS桶,用火花在任何受支持的格式读取命令,例如:
df=火花。读。格式(“铺”)。负载(“gs: / / < bucket名> / <路径>”)
写GCS桶,使用一个火花写命令在任何受支持的格式,例如:
df。写。格式(“铺”)。模式(“<模式>”)。保存(“gs: / / < bucket名> / <路径>”)
取代< bucket名>
斗中创建的名称步骤3:配置GCS桶。