谷歌云存储

介绍如何在Databricks中对谷歌GCS (Cloud Storage)表进行读写操作。如果要从GCS桶中读写,必须创建一个附加的服务帐户,并且在创建集群时必须将该桶与该服务帐户关联。

直接使用服务帐户电子邮件地址(推荐的方法)或为服务帐户生成的密钥连接到桶。

有关使用安装的GCS桶的文档,请参见在Databricks上挂载云对象存储

步骤1:使用谷歌云控制台设置谷歌云服务账号

需要为Databricks集群创建一个服务帐号。我们建议给予此服务帐户执行其任务所需的最少权限。

重要的

服务帐户必须位于用于设置Databricks工作空间的谷歌Cloud项目中。

  1. 点击IAM和Admin在左侧导航窗格中。

  2. 点击服务帐户

  3. 点击+创建服务账号

  4. 输入服务帐户名称和描述。

    谷歌创建GCS业务帐号

  5. 点击创建

  6. 点击继续

  7. 点击完成

  8. 导航到谷歌云控制台服务帐户清单并选择一个服务帐户。

    复制相关的电子邮件地址。在设置Databricks集群时将需要它。

步骤2:配置GCS桶

创建桶

如果你还没有桶,创建一个:

  1. 点击存储在左侧导航窗格中。

  2. 点击创建桶

    谷歌创建桶
  3. 命名你的桶。选择一个符合谷歌的全局唯一的永久名称命名要求用于GCS桶。

    重要的

    要使用DBFS挂载,桶名不能包含下划线。

  4. 点击创建

配置桶

配置桶:

  1. 配置桶详细信息。

  2. 单击权限选项卡。

  3. 旁边是权限标签,点击添加

    谷歌桶详细信息
  4. 在“Cloud Storage”角色中为桶上的服务帐户赋予如下权限:存储管理

    谷歌桶权限
  5. 点击保存

步骤3:设置Databricks集群

当你配置集群,扩大高级选项并设置谷歌业务帐号字段到您的服务帐户电子邮件地址。

直接访问GCS桶

若要直接读写桶,您可以设置服务帐户电子邮件地址或配置在您的火花配置

步骤1:使用谷歌云控制台设置谷歌云服务账号

需要为Databricks集群创建一个服务帐号。Databricks建议给予该服务帐户执行其任务所需的最少权限。

  1. 点击IAM和Admin在左侧导航窗格中。

  2. 点击服务帐户

  3. 点击+创建服务账号

  4. 输入服务帐户名称和描述。

    谷歌创建GCS业务帐号
  5. 点击创建

  6. 点击继续

  7. 点击完成

  8. 获取服务帐户的电子邮件地址或为服务帐户生成密钥。

    请注意

    Databricks建议使用服务帐户的电子邮件地址,因为不涉及密钥,因此没有泄露密钥的风险。使用键的一个原因是,如果服务帐户需要位于与创建工作区时使用的项目不同的谷歌Cloud项目中。

    • 服务账号邮箱地址:进入谷歌云控制台服务帐户清单.选择业务帐户。复制与之相关的电子邮件地址。您将在集群设置页面中需要它。

      重要的

      如果使用服务帐户电子邮件地址方法,则服务帐户必须位于用于设置Databricks工作区的相同谷歌Cloud项目中。

    • 关键:创建密钥。看到创建直接访问GCS桶的密钥

创建直接访问GCS桶的密钥

警告

您为服务帐户生成的JSON密钥是一个私钥,仅应与授权用户共享,因为它控制着对谷歌云帐户中的数据集和资源的访问。

  1. 在谷歌Cloud控制台的“服务帐户”列表中,单击新创建的帐户。

  2. 部分中,点击ADD KEY >创建新密钥

    谷歌创建密钥
  3. 接受JSON密钥类型。

  4. 点击创建.密钥文件被下载到您的计算机。

步骤2:配置GCS桶

创建桶

如果你还没有桶,创建一个:

  1. 点击存储在左侧导航窗格中。

  2. 点击创建桶

    谷歌创建桶
  3. 点击创建

配置桶

  1. 配置桶详细信息。

  2. 单击权限选项卡。

  3. 旁边是权限标签,点击添加

    谷歌桶详细信息
  4. 提供存储管理云存储角色对桶上服务帐户的权限。

    谷歌桶权限
  5. 点击保存

步骤3:设置Databricks集群

当你配置集群

  1. Databricks运行时版本下拉,选择7.3 LTS或以上。

  2. 您可以使用服务帐户电子邮件地址或为服务帐户生成的密钥进行身份验证。

    • 服务账号邮箱地址:扩大高级选项并设置谷歌业务帐号字段到您的服务帐户电子邮件地址。

    • 关键:在火花配置页签,添加如下Spark配置。取代< client_email >< project_id >< private_key >,< private_key_id >这些字段名称的值来自您的关键JSON文件。

      重要的

      的值< private_key_id >跨多行。粘贴整个私钥,包括开头和结尾的引号。

      spark.hadoop.google.cloud.auth.service.account.enable真实spark.hadoop.fs.gs.auth.service.account.email < client_email >spark.hadoop.fs.gs.project.id < project_id >spark.hadoop.fs.gs.auth.service.account.private.key < private_key >spark.hadoop.fs.gs.auth.service.account.private.key.id < private_key_id >

4 .使用方法

要从GCS桶中读取,可以使用任何支持的格式的Spark read命令,例如:

df火花格式“铺”负载“gs: / / < bucket名> / <路径>”

要写入GCS桶,可以使用Spark支持的任何格式的写命令,例如:

df格式“铺”模式“< >模式”保存“gs: / / < bucket名> / <路径>”

取代< bucket名>中创建的bucket的名称步骤2:配置GCS桶

例如笔记本电脑

阅读谷歌云存储笔记本

在新标签页打开笔记本

写入谷歌云存储笔记本

在新标签页打开笔记本