

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 数据来源和输出支持的连接
<a name="supported-data-connection-sources"></a>

您可以连接到以下数据源以执行 DataBrew 配方作业。其中包括任何不是您要直接上传到的文件的数据源 DataBrew。您正在使用的数据来源可能称为数据库、数据仓库或具有其他名称。我们将所有数据提供程序均称为数据来源或连接。

您可以使用以下任何一种作为数据来源来创建数据集。

您还可以使用 Amazon S3 或 Amazon RDS 支持的 JDBC 数据库来输出 DataBrew 配方任务。 AWS Glue Data Catalog AWS Data Exchange 不支持 Amazon AppFlow 和 Amazon 存储 DataBrew 食谱任务输出的数据存储。
+ **Amazon S3**

  您可以使用 S3 来存储和保护任意数量的数据。要创建数据集，请指定 DataBrew 可以访问数据文件的 S3 URL，例如：`s3://your-bucket-name/inventory-data.csv`

  DataBrew 还可以读取 S3 文件夹中的所有文件，这意味着您可以创建跨多个文件的数据集。为此，请使用以下形式指定 S3 URL：`s3://your-bucket-name/your-folder-name/`。

   DataBrew 仅支持以下 Amazon S3 存储类别：标准、低冗余、标准 IA 和 S3 单区-IA。 DataBrew 忽略具有其他存储类别的文件。 DataBrew 还会忽略空文件（包含 0 字节的文件）。有关 Amazon S3 存储类别的更多信息，请参阅《Amazon S3 控制台用户指南》**中的[使用 Amazon S3 存储类别](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html)。
+ **AWS Glue Data Catalog**

  您可以使用数据目录来定义对存储在 AWS 云中的数据的引用。使用 Data Catalog，可以与以下服务中的各表建立连接：
  + Data Catalog Amazon S3
  + Data Catalog Amazon Redshift
  + Data Catalog Amazon RDS
  + AWS Glue

  DataBrew 还可以读取 Amazon S3 文件夹中的所有文件，这意味着您可以创建跨多个文件的数据集。要执行此操作，请使用以下形式指定 Amazon S3 URL：`s3://your-bucket-name/your-folder-name/`。

  要与一起使用 DataBrew，中定义的 Amazon S3 表必须添加一个名为 a 的表属性`classification`，该属性将数据的格式标识为`csv``json``parquet`、或，以及 a `typeOfData` s `file`。 AWS Glue Data Catalog如果在创建表时未添加表属性，则可以使用 AWS Glue 控制台添加该属性。

   DataBrew 仅支持 Amazon S3 存储类别 “标准”、“低冗余”、“标准 — IA” 和 “S3 单区 — IA”。 DataBrew 忽略具有其他存储类别的文件。 DataBrew 还会忽略空文件（包含 0 字节的文件）。有关 Amazon S3 存储类别的更多信息，请参阅《Amazon S3 控制台用户指南》**中的[使用 Amazon S3 存储类别](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html)。

  DataBrew 如果创建了适当的资源策略，也可以从其他账户访问 AWS Glue Data Catalog S3 表。您可以在 AWS Glue 控制台**设置**选项卡的**数据目录**下创建策略。以下是专门针对单个 AWS 区域的示例策略。
**警告**  
这是一个高度宽松的资源策略，可授予 `*$ACCOUNT_TO*` 对 `*$ACCOUNT_FROM*` 的数据目录进行无限制访问的权限。在大多数情况下，建议您将资源策略锁定在特定的目录或表中。有关更多信息，请参阅《AWS Glue 开发人员指南》**中的[用于访问控制的AWS Glue 资源策略](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)。

  在某些情况下，您可能需要创建项目或在中运行任务，其中`*$ACCOUNT_TO*`包含指向也 AWS Glue DataBrew 位于的 S3 位置`*$ACCOUNT_FROM*`的 AWS Glue Data Catalog S3 表`*$ACCOUNT_FROM*`。在这种情况下，在 `*$ACCOUNT_TO*` 中创建项目和作业时使用的 IAM 角色必须有权列出和获取来自 `*$ACCOUNT_FROM*` 的该 S3 位置的对象。有关更多信息，请参阅《AWS Glue 开发人员指南》**中的[授予跨账户访问权限](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html)。
+ **使用 JDBC 驱动程序连接的数据**

  您可以通过使用支持的 JDBC 驱动程序连接到数据来创建数据集。有关更多信息，请参阅 [将驱动程序与 AWS Glue DataBrew](dbms-driver-connections.md)。

  DataBrew 使用 Java 数据库连接 (JDBC) 正式支持以下数据源：
  + Microsoft SQL Server
  + MySQL
  + Oracle
  + PostgreSQL
  + Amazon Redshift
  + Snowflake Connector for Spark

  数据源可以位于您可以从中连接到它们的任何地方 DataBrew。此列表仅包括我们测试过且因此可以支持的 JDBC 连接。

  可以通过以下任一方式连接 Amazon Redshift 和 Snowflake Connector for Spark 数据来源：
  + 使用表名称。
  + 使用跨多个表和操作的 SQL 查询。

  在启动项目或作业运行时执行 SQL 查询。

  要连接到要求使用未列出的 JDBC 驱动程序的数据，请确保该驱动程序与 JDK 8 兼容。要使用该驱动程序，请将其存储在 S3 中的存储桶中，您可以在其中使用您的 IAM 角色对其进行访问 DataBrew。然后，将您的数据集指向驱动程序文件。有关更多信息，请参阅 [将驱动程序与 AWS Glue DataBrew](dbms-driver-connections.md)。

  基于 SQL 的数据集的示例查询：

  ```
  SELECT
      * 
  FROM
      public.customer as c 
  JOIN
      public.customer_address as ca on c.current_address=ca.current_address
  WHERE
      ca.address_id>0 AND ca.address_id<10001 ORDER BY ca.address_id
  ```

  **自定义 SQL 的限制**

  如果您使用 JDBC 连接访问数据 DataBrew 集的数据，请记住以下几点：
  + AWS Glue DataBrew 不会验证您在创建数据集时提供的自定义 SQL。SQL 查询将在您启动项目或作业运行时执行。 DataBrew 获取您提供的查询，并使用默认或提供的 JDBC 驱动程序将其传递给数据库引擎。
  + 使用无效查询创建的数据集在项目或作业中使用时将失效。请在创建数据集之前验证您的查询。
  + **验证 SQL** 功能仅适用于基于 Amazon Redshift 的数据来源。
  + 如果要在项目中使用数据集，请将 SQL 查询运行时间限制在三分钟以内，以避免项目加载期间出现超时。在创建项目之前，请检查查询运行时。
+ **Amazon AppFlow**

  使用亚马逊 AppFlow，你可以将数据从第三方 Software-as-a-Service (SaaS) 应用程序传输到亚马逊 S3，例如 Salesforce、Zendesk、Slack 和。 ServiceNow然后，您可以使用这些数据来创建 DataBrew 数据集。

  在 Amazon 中 AppFlow，您可以创建连接和流程，以便在您的第三方应用程序和目标应用程序之间传输数据。使用亚马逊时 AppFlow DataBrew，请确保亚马逊的 AppFlow 目标应用程序是 Amazon S3。除了 Amazon S3 之外，Amazon AppFlow 目标应用程序不会出现在 DataBrew 控制台中。有关从第三方应用程序传输数据以及创建 Amazon AppFlow 连接和流程的更多信息，请参阅 [Amazon AppFlow 文档](https://docs.aws.amazon.com/appflow/index.html)。

  当您在的 “**数据集” 选项卡中选择 “连接新****数据集**” DataBrew 并单击 Amazon 时 AppFlow，您将看到亚马逊 AppFlow 中所有配置为 Amazon S3 作为目标应用程序的流程。要将流数据用于您的数据集，请选择该流。

   AppFlow 在 DataBrew 控制台中选择 “**创建流程**”、“**管理**流程” 和 “**查看亚马逊详情**” 将打开 Amazon AppFlow 控制台，以便您可以执行这些任务。

  从 Amazon 创建数据集后 AppFlow，您可以在查看数据集详细信息或任务详细信息时运行流程并查看最新的流程运行详情。当您在中运行流程时 DataBrew，数据集将在 S3 中更新并准备好在中使用 DataBrew。

  当您在 DataBrew 控制台中选择 Amazon AppFlow 流程来创建数据集时，可能会出现以下情况：
  + **数据尚未汇总**-如果流量触发器为**按需运行或按****计划运行**且具有完整数据传输，请务必在使用流程创建数据 DataBrew 集之前汇总该流程的数据。通过聚合流，可将流中的所有记录合并到一个文件中。触发器类型为采用增量数据传输的**按计划运行**或**按事件运行**的流不需要聚合。要在 Amazon 中聚合数据 AppFlow，请选择**编辑流程配置** > **目标详情** > **其他设置** > **数据传输首选项**。
  + **流尚未运行**：如果流的运行状态为空，则表示存在以下情况之一：
    + 如果运行流的触发器是**按需运行**，则该流尚未运行。
    + 如果运行流的触发器是**按事件运行**，则触发事件尚未发生。
    + 如果运行流的触发器是**按计划运行**，则计划的运行尚未发生。

    在通过流创建数据集之前，请针对该流选择**运行流**。

    有关更多信息，请参阅《[亚马逊 AppFlow 用户指南》中的亚马逊 AppFlow 流程](https://docs.aws.amazon.com/appflow/latest/userguide/flows.html)。
+ **AWS Data Exchange**

  您可以从 AWS Data Exchange中提供的数百个第三方数据来源中进行选择。通过订阅这些数据源，您可以获得最大 up-to-date版本的数据。

  要创建数据集，您需要指定您已订阅并有权使用的 AWS Data Exchange 数据产品的名称。