

# 连接到 AWS Glue Studio 中的 Google BigQuery
<a name="connecting-to-data-bigquery"></a>

**注意**  
  在 AWS Glue 4.0 及更高版本中，您可以使用 AWS Glue for Spark 在 Google BigQuery 中读取和写入表。要以编程方式为 Google BigQuery 配置 AWS Glue 作业，请参阅 [BigQuery 连接](aws-glue-programming-etl-connect-bigquery-home.md)。  

 AWS Glue Studio 提供一个可视化界面，用于连接到 BigQuery、编写数据集成作业并在 AWS Glue Studio 无服务器 Spark 运行时系统上运行这些作业。

 在中 AWS Glue Studio 创建与 Google BigQuery 的连接时，系统会创建一个统一连接。有关更多信息，请参阅 [注意事项](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations)。

 现在，通过与 Google BigQuery 的统一连接，无需创建具有特定格式 `{"credentials": "base64 encoded JSON"}` 的凭证的密钥，就可以创建直接包含来自 Google BigQuery 的 JSON 的密钥：`{"type": "service-account", ...}`。

**Topics**
+ [创建 BigQuery 连接](creating-bigquery-connection.md)
+ [创建 BigQuery 源节点](creating-bigquery-source-node.md)
+ [创建 BigQuery 目标节点](creating-bigquery-target-node.md)
+ [高级选项](#creating-bigquery-connection-advanced-options)

# 创建 BigQuery 连接
<a name="creating-bigquery-connection"></a>

要从 AWS Glue 中连接到 Google BigQuery，您需要创建 Google Cloud Platform 凭证并将其存储在 AWS Secrets Manager 密钥中，然后将该密钥与 Google BigQuery AWS Glue 连接关联。

**要配置与 BigQuery 的连接：**

1. 在 Google Cloud Platform，创建并识别相关资源：
   + 创建或标识包含您想要连接的 BigQuery 表的 GCP 项目。
   + 启用 BigQuery API。有关更多信息，请参阅[使用 BigQuery 存储读取 API 读取表数据](https://cloud.google.com/bigquery/docs/reference/storage/#enabling_the_api)。

1. 在 Google Cloud Platform 中，创建和导出服务账户凭证：

   您可以使用 BigQuery 凭证向导来加快此步骤：[创建凭证](https://console.cloud.google.com/apis/credentials/wizard?api=bigquery.googleapis.com)。

   要在 GCP 中创建服务账户，请按照[创建服务账户](https://cloud.google.com/iam/docs/service-accounts-create)中的教程进行操作。
   + 选择**项目**时，请选择包含您的 BigQuery 表的项目。
   + 为您的服务账户选择 GCP IAM 角色时，请添加或创建一个角色，该角色将授予运行 BigQuery 作业的相应权限，以读取、写入或创建 BigQuery 表。

   要为您的服务账户创建凭证，请按照[创建服务账户密钥](https://cloud.google.com/iam/docs/keys-create-delete#creating)中的教程进行操作。
   + 在选择密钥类型时，请选择 **JSON**。

   现在，您应该已经下载了包含服务账户凭证的 JSON 文件。如下所示：

   ```
   {
     "type": "service_account",
     "project_id": "*****",
     "private_key_id": "*****",
     "private_key": "*****",
     "client_email": "*****",
     "client_id": "*****",
     "auth_uri": "https://accounts.google.com/o/oauth2/auth",
     "token_uri": "https://oauth2.googleapis.com/token",
     "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
     "client_x509_cert_url": "*****",
     "universe_domain": "googleapis.com"
   }
   ```

1. 在 AWS Secrets Manager 中，使用您下载的凭证文件创建密钥。您可以选择“**纯文本**”选项卡并粘贴 JSON 格式的文件内容。要在 Secrets Manager 中创建密钥，请按照 AWS Secrets Manager 文档中[创建 AWS Secrets Manager 密钥](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html)中的教程进行操作。创建密钥后，保留密钥名称 *secretName*，以供下一步使用。

1. 在 AWS Glue Data Catalog 中，按照 [https://docs.aws.amazon.com/glue/latest/dg/console-connections.html](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html) 中的步骤创建连接。创建连接后，保留连接名称 *connectionName*，以供下一步使用。
   + 在选择**连接类型**时，请选择 Google BigQuery。
   + 选择 **AWS 密钥**时，请提供 *secretName*。

1. 向与您的 AWS Glue 作业关联的 IAM 角色授予读取 *secretName* 的权限。

1. 在 AWS Glue 作业配置中，提供 *connectionName* 作为**附加网络连接**。

# 创建 BigQuery 源节点
<a name="creating-bigquery-source-node"></a>

## 所需的先决条件
<a name="creating-bigquery-source-node-prerequisites"></a>
+ BigQuery 类型 AWS Glue Data Catalog 连接
+ 您的 Google BigQuery 凭证的 AWS Secrets Manager 密钥，供连接使用。
+ 对您的作业具有读取连接使用的密钥的相应权限。
+ 您要读取的表的名称和数据集以及相应的 Google Cloud 项目。

## 添加 BigQuery 数据来源
<a name="creating-bigquery-source-node-add"></a>

**要添加**数据来源 – BigQuery** 节点，请执行以下操作：**

1.  为您的 BigQuery 数据来源选择连接。由于您已经创建了它，它应该提供在下拉列表中。如果需要创建连接，请选择**创建 BigQuery 连接**。有关更多信息，请参阅 [Overview of using connectors and connections](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview)。

    选择连接后，您可以通过单击**查看属性**来查看连接属性。

1. 确定您想要读取的 BigQuery 数据，然后选择 **BigQuery 来源**选项
   + 选择单个表 – 允许您从表中提取所有数据。
   + 输入自定义查询 – 允许您通过提供查询来自定义检索哪些数据。

1.  描述您想要读取的数据

   **（必填）**将**父项目**设置为包含您的表的项目，或计费父项目（如果相关）。

   如果您选择单个表，则请按以下格式将**表**设置为 Google BigQuery 表的名称：`[dataset].[table]`

   如果您选择了查询，则请将其提供给 **Query**。在查询中，引用具有完全限定表名的表，使用的格式为：`[project].[dataset].[tableName]`。

1.  提供 BigQuery 属性 

   如果选择了单个表，则无需提供其他属性。

   如果选择了查询，则必须提供以下**自定义 Google BigQuery 属性**：
   + 将 `viewsEnabled` 设置为 true。
   + 将 `materializationDataset` 设置为数据集。通过 AWS Glue 连接提供的凭证进行身份验证的 GCP 主体必须能够在此数据集中创建表。

# 创建 BigQuery 目标节点
<a name="creating-bigquery-target-node"></a>

## 所需的先决条件
<a name="creating-bigquery-target-node-prerequisites"></a>
+ BigQuery 类型 AWS Glue Data Catalog 连接
+ 您的 Google BigQuery 凭证的 AWS Secrets Manager 密钥，供连接使用。
+ 对您的作业具有读取连接使用的密钥的相应权限。
+ 您要写入到的表和相应的 Google Cloud 项目的名称和数据集。

## 添加 BigQuery 数据目标
<a name="creating-bigquery-target-node-add"></a>

**要添加**数据目标 – BigQuery** 节点，请执行以下操作：**

1.  为您的 BigQuery 数据目标选择连接。由于您已经创建了它，它应该提供在下拉列表中。如果需要创建连接，请选择**创建 BigQuery 连接**。有关更多信息，请参阅 [Overview of using connectors and connections](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview)。

    选择连接后，您可以通过单击**查看属性**来查看连接属性。

1. 确定您要写入的 BigQuery 表，然后选择**写入方法**。
   + 直接 – 使用 BigQuery 存储写入 API 直接写入 BigQuery。
   + 间接 – 写入 Google Cloud Storage，然后复制到 BigQuery。

   如果您想间接写入，请使用**临时 GCS 存储桶**提供目标 GCS 位置。您需要在 AWS Glue 连接中提供其他配置。有关更多信息，请参阅在 [Google BigQuery 中使用间接写入](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect-bigquery-home.html#aws-glue-programming-etl-connect-bigquery-indirect-write)。

1.  描述您想要读取的数据

   **（必填）**将**父项目**设置为包含您的表的项目，或计费父项目（如果相关）。

   如果您选择单个表，则请按以下格式将**表**设置为 Google BigQuery 表的名称：`[dataset].[table]`

## 高级选项
<a name="creating-bigquery-connection-advanced-options"></a>

您可以在创建 BigQuery 节点时提供高级选项。这些选项与编程 Spark 脚本的 AWS Glue 时可用的选项相同。

请参阅 AWS Glue 开发者指南中的 [BigQuery 连接选项参考](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-bigquery-home.html)。