本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
支持的数据源和输出连接
您可以连接到以下数据源以执行 DataBrew 配方作业。这些数据源包括任何不是您要直接上传到的文件的数据源 DataBrew。您正在使用的数据源可能称为数据库、数据仓库或其他东西。我们将所有数据提供者称为数据源或连接。
您可以使用以下任何一种作为数据源来创建数据集。
您也可以使用 Amazon S3 或亚马逊RDS支持的JDBC数据库来输出 DataBrew 配方任务。 AWS Glue Data Catalog AWS Data Exchange 不支持 Amazon AppFlow 和 Amazon 存储 DataBrew 食谱任务输出的数据存储。
-
Amazon S3
您可以使用 S3 来存储和保护任意数量的数据。要创建数据集,请指定URL DataBrew 可以访问数据文件的 S3,例如:
s3://your-bucket-name/inventory-data.csv
DataBrew 还可以读取 S3 文件夹中的所有文件,这意味着您可以创建跨多个文件的数据集。为此,请按以下形式指定 S3URL:
s3://your-bucket-name/your-folder-name/
。DataBrew 仅支持以下 Amazon S3 存储类别:标准、低冗余、标准 IA 和 S3 单区-IA。 DataBrew 忽略具有其他存储类别的文件。 DataBrew 还会忽略空文件(包含 0 字节的文件)。有关 Amazon S3 存储类的更多信息,请参阅 Amazon S3 控制台用户指南中的使用 Amazon S3 存储类别。
-
AWS Glue Data Catalog
您可以使用数据目录来定义对存储在 AWS 云中的数据的引用。使用数据目录,您可以建立与以下服务中各个表的连接:
-
数据目录 Amazon S3
-
数据目录 Amazon Redshift
数据目录 Amazon RDS
-
AWS Glue
DataBrew 还可以读取 Amazon S3 文件夹中的所有文件,这意味着您可以创建跨多个文件的数据集。为此,请按以下格式指定 Amazon S3URL:
s3://your-bucket-name/your-folder-name/
要与一起使用 DataBrew,中定义的 Amazon S3 表必须添加一个名为 a 的表属性
classification
,该属性将数据的格式标识为csv
json
parquet
、或,以及 atypeOfData
sfile
。 AWS Glue Data Catalog如果在创建表时未添加表属性,则可以使用 AWS Glue 控制台添加该属性。DataBrew 仅支持 Amazon S3 存储类别 “标准”、“低冗余”、“标准 — IA” 和 “S3 单区 — IA”。 DataBrew 忽略具有其他存储类别的文件。 DataBrew 还会忽略空文件(包含 0 字节的文件)。有关 Amazon S3 存储类的更多信息,请参阅 Amazon S3 控制台用户指南中的使用 Amazon S3 存储类别。
DataBrew 如果创建了适当的资源策略,也可以从其他账户访问 AWS Glue Data Catalog S3 表。您可以在 AWS Glue 控制台的数据目录下方的设置选项卡上创建策略。以下是专门针对单个的策略示例 AWS 区域。
{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Principal" : { "AWS" : "*$ACCOUNT_TO*" }, "Action" : "glue:*", "Resource" : "arn:aws:glue:*us-east-1*:*$ACCOUNT_FROM*:*" } ] }
警告
这是一项高度宽松的资源策略,可授予对数据目录的
*$ACCOUNT_TO*
无限制访问权限。*$ACCOUNT_FROM*
在大多数情况下,我们建议您将资源策略锁定为特定的目录或表。有关更多信息,请参阅《AWS Glue 开发人员指南》中的访问控制AWS Glue 资源策略。在某些情况下,您可能需要创建项目或在 AWS Glue DataBrew 中运行任务,其中
*$ACCOUNT_TO*
包含指向也位于*$ACCOUNT_FROM*
的 S3 位置 AWS Glue 的数据目录 S3 表*$ACCOUNT_FROM*
。在这种情况下,在中创建项目和作业时使用的IAM角色*$ACCOUNT_TO*
必须具有列出和获取该 S3 位置中对象的权限*$ACCOUNT_FROM*
。有关更多信息,请参阅AWS Glue 开发者指南中的授予跨账户访问权限。 -
-
使用JDBC驱动程序连接数据
您可以通过使用支持的JDBC驱动程序连接到数据来创建数据集。有关更多信息,请参阅 将驱动程序与 AWS Glue DataBrew。
DataBrew 使用 Java 数据库连接 (JDBC) 正式支持以下数据源:
-
微软SQL服务器
-
我的 SQL
Oracle
-
波斯特格雷 SQL
-
Amazon Redshift
-
适用于 Spark 的雪花连接器
数据源可以位于您可以从中连接到它们的任何地方 DataBrew。此列表仅包括我们测试过并因此可以支持的JDBC连接。
适用于 Spark 数据源的 Amazon Redshift 和 Snowflake Connector 可以通过以下任一方式进行连接:
带有表名。
使用跨越多个表和操作的SQL查询。
SQL查询是在启动项目或作业运行时执行的。
要连接到需要未列出的JDBC驱动程序的数据,请确保该驱动程序与 JDK 8 兼容。要使用驱动程序,请将其存储在 S3 中的存储桶中,您可以通过IAM角色访问该驱动程序 DataBrew。然后将您的数据集指向驱动程序文件。有关更多信息,请参阅 将驱动程序与 AWS Glue DataBrew。
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 连接和流程的更多信息,请参阅亚马逊 AppFlow 文档。
当您在的 “数据集” 选项卡中选择 “连接新数据集” DataBrew 并单击 Amazon 时 AppFlow,您将看到亚马逊 AppFlow 中所有配置为 Amazon S3 作为目标应用程序的流程。要将流程的数据用于您的数据集,请选择该流程。
AppFlow 在 DataBrew 控制台中选择 “创建流程”、“管理流程” 和 “查看亚马逊详情” 将打开 Amazon AppFlow 控制台,以便您可以执行这些任务。
从 Amazon 创建数据集后 AppFlow,您可以在查看数据集详细信息或任务详细信息时运行流程并查看最新的流程运行详情。当您在中运行流程时 DataBrew,数据集将在 S3 中更新并准备好在中使用 DataBrew。
当您在 DataBrew 控制台中选择 Amazon AppFlow 流程来创建数据集时,可能会出现以下情况:
数据尚未汇总-如果流量触发器为按需运行或按计划运行且具有完整数据传输,请务必在使用流程创建数据 DataBrew 集之前汇总该流程的数据。聚合流程会将流程中的所有记录合并到一个文件中。触发器类型为 “通过增量数据传输按计划运行” 或 “在事件上运行” 的流程不需要聚合。要在 Amazon 中聚合数据 AppFlow,请选择编辑流程配置 > 目标详情 > 其他设置 > 数据传输首选项。
流程尚未运行-如果流程的运行状态为空,则表示以下情况之一:
如果运行流程的触发器是 “按需运行”,则该流程尚未运行。
如果运行流程的触发器是 Run on ev ent,则触发事件尚未发生。
如果运行流程的触发器是 “按计划运行”,则尚未进行计划运行。
在创建包含流程的数据集之前,请为该流程选择运行流程。
有关更多信息,请参阅《亚马逊 AppFlow 用户指南》中的亚马逊 AppFlow 流程。
-
AWS Data Exchange
您可以从中提供的数百种第三方数据源中进行选择 AWS Data Exchange。通过订阅这些数据源,您可以获得最大 up-to-date版本的数据。
要创建数据集,您需要指定您已订阅并有权使用的 AWS Data Exchange 数据产品的名称。