创建和使用 Amazon Glue DataBrew 配方作业
使用 DataBrew 配方作业可清理并标准化 DataBrew 数据集中的数据,并将结果写入您选择的输出位置。运行配方作业不会影响数据集或底层源数据。当作业运行时,它以只读方式连接到源数据。作业输出将写入您在 Amazon S3、Amazon Glue Data Catalog 或支持的 JDBC 数据库中定义的输出位置。
使用以下过程创建 DataBrew 配方作业。
创建配方作业
登录到 Amazon Web Services 管理控制台并打开 DataBrew 控制台,网址:https://console.aws.amazon.com/databrew/。
从导航窗格中选择作业,选择配方作业选项卡,然后选择创建作业。
-
输入作业的名称,然后选择创建配方作业。
-
对于作业输入,输入要创建的作业的详细信息:要处理的数据集的名称和要使用的配方。
配方作业使用 DataBrew 配方来转换数据集。要使用配方,请务必先将其发布。
-
配置作业输出设置。
提供作业输出目标。如果没有为输出目标配置 DataBrew 连接,请首先在数据集选项卡上进行配置,如数据源和输出支持的连接中所述。请选择以下输出目标之一:
Amazon S3,无论是否提供 Amazon Glue Data Catalog 支持
Amazon Redshift,无论是否提供 Amazon Glue Data Catalog 支持
JDBC
Snowflake 表
带 Amazon Glue Data Catalog 支持的 Amazon RDS 数据库表。Amazon RDS 数据库表支持以下数据库引擎:
Amazon Aurora
MySQL
Oracle
PostgreSQL
Microsoft SQL Server
带 Amazon Glue Data Catalog 支持的 Amazon S3。
对于基于 Amazon Lake Formation 的 Amazon Glue Data Catalog 输出,DataBrew 仅支持替换现有文件。在这种方法中,文件将被替换,以保持您的数据访问角色的现有 Lake Formation 权限不变。此外,DataBrew 优先考虑 Amazon Glue Data Catalog 表中的 Amazon S3 位置。因此,创建配方作业时无法覆盖 Amazon S3 位置。
在某些情况下,作业输出中的 Amazon S3 位置不同于 Data Catalog 表中的 Amazon S3 位置。在这些情况下,DataBrew 会使用目录表中的 Amazon S3 位置自动更新作业定义。在更新或启动现有作业时执行此操作。
-
仅对于 Amazon S3 输出目标,您还有其他选择:
-
为 Amazon S3 选择一种可用数据输出格式,并(可选)配置压缩方式和自定义分隔符。输出文件支持的分隔符与输入文件所支持的相同:逗号、冒号、分号、竖线、制表符、插入符号、反斜杠和空格。有关格式的详细信息,请参见下表。
格式。 文件扩展名(未压缩) 文件扩展名(压缩) 逗号分隔的值
.csv.csv.snappy,.csv.gz,.csv.lz4,csv.bz2,.csv.deflate,csv.br制表符分隔值
.csv.tsv.snappy,.tsv.gz,.tsv.lz4,tsv.bz2,.tsv.deflate,tsv.brApache Parquet .parquet.parquet.snappy,.parquet.gz,.parquet.lz4,.parquet.lzo,.parquet.brAmazon Glue Parquet 不支持 .glue.parquet.snappyApache Avro .avro.avro.snappy,.avro.gz,.avro.lz4,.avro.bz2,.avro.deflate,.avro.brApache ORC .orc.orc.snappy,.orc.lzo,.orc.zlibXML .xml.xml.snappy,.xml.gz,.xml.lz4,.xml.bz2,.xml.deflate,.xml.brJSON(仅限 JSON Lines 格式) .json.json.snappy,.json.gz,.json.lz4,json.bz2,.json.deflate,.json.brTableau Hyper 不支持 不适用 -
选择输出单个文件还是多个文件。Amazon S3 文件输出选项有三个:
自动生成文件(推荐):让 DataBrew 确定输出文件的最佳数量。
单文件输出:生成单个输出文件。此选项可能会导致额外的作业执行时间,因为需要进行后期处理。
多文件输出:是否指定作业输出的文件数。有效值为 2–999。如果使用列分区,或者输出中的行数少于您指定的文件数,则输出的文件数可能会少于您指定的数量。
-
(可选)为配方作业输出选择列分区。
列分区提供了另一种将配方作业输出分区到多个文件的方法。列分区可以与新的或现有的 Amazon S3 输出一起使用,也可以与新的数据目录 Amazon S3 输出一起使用。它不能与现有的数据目录 Amazon S3 表类数据存储服务一起使用。输出文件基于您指定的列名的值。如果您指定的列名唯一,则生成的 Amazon S3 文件夹路径将基于列名的顺序。
有关列分区的示例,请参见下面的列分区示例。
-
-
(可选)选择为作业输出启用加密以加密 DataBrew 写入输出位置的作业输出,然后选择加密方法:
使用 SSE-S3 加密:输出使用具有 Amazon S3 托管加密密钥的服务器端加密进行加密。
使用 Amazon Key Management Service(Amazon KMS):使用 Amazon KMS 加密输出。要使用此选项,请选择要使用的 Amazon KMS 密钥的 Amazon 资源名称(ARN)。如果还没有 Amazon KMS 密钥,可以选择创建 Amazon KMS 密钥创建一个。
-
要获得访问权限,请选择允许 DataBrew 写入您的输出位置的 Amazon Identity and Access Management(IAM)角色。对于您的 Amazon 账户拥有的位置,您可以选择
AwsGlueDataBrewDataAccessRole服务托管的角色。这样做让 DataBrew 可以访问您拥有的 Amazon 资源。 -
在高级作业设置窗格上,您可以针对作业运行方式选择更多选项:
-
最大单位数:DataBrew 使用并行运行的多个计算节点处理作业。默认节点数为 5。最大节点数为 149。
-
作业超时:如果作业运行时间超过您在此处设置的分钟数,则该作业将失败并显示超时错误。默认值为 2880 分钟(48 小时)。
-
重试次数:如果作业在运行时失败,DataBrew 可以再次尝试运行该作业。默认情况下,不会重试作业。
-
为作业启用 Amazon CloudWatch Logs:允许 DataBrew 向 CloudWatch Logs 发布诊断信息。这些日志可用于故障排除或获取有关如何处理作业的更多详细信息。
-
-
对于计划作业,您可以应用 DataBrew 作业计划,以便您的作业在特定时间运行,或者定期运行。有关更多信息,请参阅 按计划自动运行作业。
-
根据需要进行设置后,选择创建作业。或者,如果您想立即运行作业,请选择创建并运行作业。
可以在作业运行时检查其状态,从而监控作业的进度。在作业运行完成后,状态将更改为成功。现在,可在您选择的输出位置获得作业输出。
DataBrew 会保存您的作业定义,以便稍后可以运行相同的作业。要重新运行作业,请从导航窗格中选择作业。选择要使用的作业,然后选择运行作业。
列分区示例
作为列分区示例,假设您指定了三列,它们的每一行都包含两个可能值之一。Dept 列的值可以是 Admin 或 Eng。Staff-type 列的值可以是 Part-time 或 Full-time。Location 列的值可以是 Office1 或 Office2。用于作业输出的 Amazon S3 存储桶如下所示。
s3://bucket/output-folder/Dept=Admin/Staff-type=Part-time/Area=Office1/jobId_timestamp_part0001.csv s3://bucket/output-folder/Dept=Admin/Staff-type=Part-time/Location=Office2/jobId_timestamp_part0002.csv s3://bucket/output-folder/Dept=Admin/Staff-type=Full-time/Location=Office1/jobId_timestamp_part0003.csv s3://bucket/output-folder/Dept=Admin/Staff-type=Full-time/Location=Office2/jobId_timestamp_part0004.csv s3://bucket/output-folder/Dept=Eng/Staff-type=Part-time/Location=Office1/jobId_timestamp_part0005.csv s3://bucket/output-folder/Dept=Eng/Staff-type=Part-time/Location=Office2/jobId_timestamp_part0006.csv s3://bucket/output-folder/Dept=Eng/Staff-type=Full-time/Location=Office1/jobId_timestamp_part0007.csv s3://bucket/output-folder/Dept=Eng/Staff-type=Full-time/Location=Office2/jobId_timestamp_part0008.csv
按计划自动运行作业
您可以随时重新运行 DataBrew 作业,也可以按计划自动运行 DataBrew 作业。
重新运行 DataBrew 作业
登录到 Amazon Web Services 管理控制台并打开 DataBrew 控制台,网址:https://console.aws.amazon.com/databrew/。
-
在导航窗格上,选择作业。选择要运行的作业,然后选择运行作业。
要在特定时间或定期运行 DataBrew 作业,请创建 DataBrew 作业计划。然后,您可以将作业设置为根据计划运行。
创建 DataBrew 作业计划
-
在 DataBrew 控制台的导航窗格中,选择作业。选择计划选项卡,然后选择添加计划。
-
输入计划名称,然后为运行频率选择一个值:
定期:选择您希望作业运行的频率(例如,每 12 小时运行一次)。然后,选择在哪一天或哪些天运行作业。或者,您可以输入一天中运行作业的时间。
在特定时间:输入一天中您希望作业运行的时间。然后,选择在哪一天或哪些天运行作业。
输入 CRON:通过输入有效的 cron 表达式来定义作业计划。有关更多信息,请参阅 为配方作业使用 cron 表达式。
-
根据需要进行设置后,选择 Save (保存)。
将作业与计划相关联
-
在导航窗格上,选择作业。
-
选择要使用的作业,然后对操作选择编辑。
-
在计划作业窗格上,选择关联计划。选择要使用的计划名称。
-
根据需要进行设置后,选择 Save (保存)。
为配方作业使用 cron 表达式
Cron 表达式有六个必填字段,之间以空格分隔。语法如下所示。
Minutes Hours Day-of-month Month Day-of-week Year
在前面的语法中,对指示的字段使用以下值和通配符。
| 字段 | 值 | 通配符 |
|---|---|---|
|
分钟 |
0-59 |
, - * / |
|
小时 |
0-23 |
, - * / |
|
Day-of-month |
1-31 |
, - * ? / L W |
|
Month |
1-12 或 JAN-DEC |
, - * / |
|
星期几 |
1-7 或 SUN-SAT |
, - * ? / L |
|
Year |
1970-2199 |
, - * / |
按如下方式使用这些通配符:
-
,(逗号)通配符包含其他值。在
Month字段中,JAN,FEB,MAR将包含 January、February 和 March。 -
-(短划线)通配符用于指定范围。在
Day字段中,1-15 包含指定月份的 1-15 日。 -
*(星号)通配符包含该字段中的所有值。在
Hours字段中,* 包括每个小时。 -
/(斜杠)通配符用于指定增量。在
Minutes字段中,您可以输入1/10以指定从一个小时的第一分钟开始的每个第十分钟(例如,第 11 分钟、第 21 分钟和第 31 分钟)。 -
?(问号)通配符用于指定一个或另一个。例如,假设您在
Day-of-month字段中输入 7。如果您不在乎第七天是周几,那么可以在Day-of-week字段中输入 ?。 -
Day-of-month或Day-of-week字段中的 L 通配符用于指定月或周的最后一天。 -
Day-of-month字段中的 W 通配符用于指定工作日。在Day-of-month字段中,3W用于指定最靠近当月的第三周的日。
这些字段和值具有以下限制:
-
您无法在同一 cron 表达式中为
Day-of-month和Day-of-week字段同时指定值。如果您在其中一个字段中指定了值,则必须在另一个字段中使用 ?(问号)。 -
不支持产生的速率快于 5 分钟的 Cron 表达式。
在创建计划时,您可以使用以下示例 cron 字符串。
| 分钟 | 小时 | 日期 | Month | 星期几 | Year | 含义 |
|---|---|---|---|---|---|---|
|
0 |
10 |
* |
* |
? |
* |
每天上午的 10:00 (UTC) 运行 |
|
15 |
12 |
* |
* |
? |
* |
每天下午 12:15 (UTC) 运行 |
|
0 |
18 |
? |
* |
MON-FRI |
* |
每星期一到星期五下午 6:00 (UTC) 运行 |
|
0 |
8 |
1 |
* |
? |
* |
每月第 1 天上午 8:00 (UTC) 运行 |
|
0/15 |
* |
* |
* |
? |
* |
每 15 分钟运行一次 |
|
0/10 |
* |
? |
* |
MON-FRI |
* |
从星期一到星期五,每 10 分钟运行一次 |
|
0/5 |
8-17 |
? |
* |
MON-FRI |
* |
在每星期一到星期五的上午 8:00 到下午 5:55 (UTC) 之间,每 5 分钟运行一次 |
例如,您可以使用以下 cron 表达式在每天 12:15 UTC 运行作业。
15 12 * * ? *
删除作业和作业计划
当您不再需要某个作业或作业计划时,可以将其删除。
删除作业
-
在导航窗格上,选择作业。
-
选择要删除的作业,然对操作选择删除。
删除作业计划
-
在导航窗格上,选择作业,然后选择计划选项卡。
-
选择要删除的计划,选择对操作选择删除。