本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建和处理Amazon Glue DataBrew食谱作业
使用 DataBrew 配方作业清理和规范化数据 DataBrew集中的数据,并将结果写入您选择的输出位置。运行配方作业不会影响数据集或基础源数据。作业运行时,它以只读方式连接到源数据。任务输出将写入您在 Amazon S3Amazon Glue Data Catalog、或支持的 JDBC 数据库中定义的输出位置。
使用以下过程创建 DataBrew 配方任务。
创建配方作业
登录Amazon Web Services Management Console并通过 https://console.aws.amazon.com/databrew/
打开主 DataBrew 机。 从导航窗格中选择 “作业”,选择 “配方作业” 选项卡,然后选择 “创建作业”。
-
输入任务的名称,然后选择 “创建配方作业”。
-
对于 Job 输入,输入要创建的作业的详细信息:要处理的数据集的名称和要使用的配方。
配方作业使用 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 Glue Data Catalog输出Amazon Lake Formation,仅 DataBrew 支持替换现有文件。在这种方法中,文件将被替换,以保持数据访问角色的现有 Lake Formation 权限不变。此外, DataBrew 优先考虑Amazon Glue Data Catalog表中的 Amazon S3 位置。因此,创建配方任务时,您无法覆盖 Amazon S3 位置。
在某些情况下,任务输出中的 Amazon S3 位置与数据目录表中的 Amazon S3 位置不同。在这些情况下,使用目录表中的 Amazon S3 位置自动 DataBrew 更新任务定义。它会在您更新或启动现有任务时执行此操作。
-
仅对于 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.br
Apache Parquet .parquet
.parquet.snappy
,.parquet.gz
,.parquet.lz4
,.parquet.lzo
,.parquet.br
Amazon GlueParqu 不支持 .glue.parquet.snappy
Apache Avro .avro
.avro.snappy
,.avro.gz
,.avro.lz4
,.avro.bz2
,.avro.deflate
,.avro.br
Apache ORC .orc
.orc.snappy
,.orc.lzo
,.orc.zlib
XML .xml
.xml.snappy
,.xml.gz
,.xml.lz4
,.xml.bz2
,.xml.deflate
,.xml.br
JSON(仅限 JSON 行格式) .json
.json.snappy
,.json.gz
,.json.lz4
,json.bz2
,.json.deflate
,.json.br
Talse Here 不支持 不适用 -
选择输出单个文件还是多个文件。Amazon S3 有三个文件输出选项:
自动生成文件(推荐)-已 DataBrew 确定输出文件的最佳数量。
单文件输出-生成单个输出文件。此选项可能会导致任务执行时间延长,因为需要后期处理。
多文件输出 — 您是否为作业输出指定了文件数量。有效值为 2—999。如果使用列分区或者输出中的行数少于您指定的文件数,则输出的文件数可能会少于您指定的文件数。
-
(可选)为配方作业输出选择列分区。
列分区提供了另一种将配方作业输出分区为多个文件的方法。列分区可以与新的或现有的 Amazon S3 输出一起使用,也可以与新的数据目录 Amazon S3 输出一起使用。它不能与现有的数据目录 Amazon S3 表一起使用。输出文件基于您指定的列名的值。如果您指定的列名是唯一的,则生成的 Amazon S3 文件夹路径将基于列名的顺序。
有关列分区的示例列分区示例,请参见下文。
-
-
(可选)选择 “启用作业输出加密” 以加密 DataBrew 写入输出位置的任务输出,然后选择加密方法:
使用 SSE-S3 加密-使用具有 Amazon S3 托管加密密钥的服务器端加密,对输出进行加密。
UseAmazon Key Management Service (Amazon KMS)-使用对输出进行加密Amazon KMS。要使用此选项,请选择要使用Amazon KMS密钥的 Amazon Resource Name (ARN)。如果没有Amazon KMS密钥,您可以选择 Create a key (创建Amazon KMS密钥)。
-
对于访问权限,选择一个允许 DataBrew 写入您的输出位置的Amazon Identity and Access Management (IAM) 角色。对于您的Amazon账户拥有的地点,您可以选择
AwsGlueDataBrewDataAccessRole
服务管理角色。这样做可以 DataBrew 访问您拥有Amazon的资源。 -
在高级作业设置窗格上,您可以为作业的运行方式选择更多选项:
-
最大单位数 — 使用多个计算节点 DataBrew 处理作业,parallel 运行。默认节点数为 5。最大节点数为 149。
-
Job 超时- 如果作业花费的时间超过您在此处设置的运行分钟数,则会失败并出现超时错误。默认值为 2880 分钟,即 48 小时。
-
重试次数-如果作业在运行时失败, DataBrew 可以尝试再次运行该作业。默认情况下,不重试作业。
-
为任务启用 Amazon Lo CloudWatch g s — 允许 DataBrew 向 CloudWatch 日志发布诊断信息。这些日志可用于故障排除,或获取有关如何处理作业的更多详细信息。
-
-
对于 “调度作业”, DataBrew 您可以应用作业时间表,以便作业在特定时间运行,或定期运行。有关更多信息,请参阅 使用计划自动运行作业。
-
根据需要进行设置后,选择 Create job (创建任务)。或者,如果您想立即运行作业,请选择 “创建并运行作业”。
您可以通过在作业运行时检查其状态来监控作业的进度。作业运行完成后,状态将更改为 Succeed(成功)。任务输出现在可以在您选择的输出位置使用。
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 Management Console并通过 https://console.aws.amazon.com/databrew/
打开主 DataBrew 机。 -
在导航窗格中,选择 Jobs。选择要运行的作业,然后选择 “运行作业”。
要在特定时间或定期运行 DataBrew 作业,请创建 DataBrew 作业时间表。然后,您可以将作业设置为按计划运行。
创建 DataBrew 作业时间表
-
在 DataBrew 控制台的导航窗格上,选择作业。选择 “计划” 选项卡,然后选择 “添加时间表”。
-
输入日程表的名称,然后为 “运行频率” 选择一个值:
重复 — 选择您希望作业运行的频率(例如,每 12 小时)。然后选择在哪一天或几天运行作业。(可选)您可以输入作业在一天中的运行时间。
在特定时间-输入您希望作业在一天中运行的时间。然后选择在哪一天或几天运行作业。
输入 CRON — 通过输入有效的 cron 表达式定义作业时间表。有关更多信息,请参阅 使用 cron 表达式完成配方任务。
-
根据需要进行设置后,选择 Save (保存)。
将作业与时间表关联
-
在导航窗格中,选择 Jobs。
-
选择要处理的作业,然后在 “操作” 中选择 “编辑”。 。
-
在 “安排作业” 窗格上,选择 “关联计划”。选择要使用的时间表的名称。
-
根据需要进行设置后,选择 Save (保存)。
使用 cron 表达式完成配方任务
Cron 表达式有六个必填字段,之间以空格分隔。语法如下所示。
Minutes
Hours
Day-of-month
Month
Day-of-week
Year
在前面的语法中,以下值和通配符用于指定字段。
字段 | 值 | 通配符 |
---|---|---|
分钟 |
0-59 |
, - * / |
小时 |
0–23 |
, - * / |
Day-of-month |
1-31 |
, - * ? / L W |
月份 |
1-12 或 JAN-DEC |
, - * / |
Day-of-week |
1-7 或 SUN-SAT |
, - * ? / L |
年份 |
1970-2199 |
, - * / |
按如下方式使用这些通配符:
-
,(逗号)通配符包含其他值。在
Month
实地中,JAN,FEB,MAR
包括一月、二月和三月。 -
-(破折号)通配符用于指定范围。在
Day
字段中,1—15 包含指定月份的 1-15 日。 -
*(星号)通配符包含该字段中的所有值。在
Hours
字段中,* 包括每小时。 -
/(斜杠)通配符用于指定增量。在
Minutes
字段中,您可以输入1/10
以指定从一个小时的第一分钟(例如,第 11 分钟、第 11 分钟、第 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 字符串。
分钟 | 小时 | 日期 | 月份 | 星期几 | 年份 | 意义 |
---|---|---|---|---|---|---|
0 |
10 |
* |
* |
? |
* |
每天上午的 10:00 (UTC) 运行 |
15 |
12 |
* |
* |
? |
* |
每天下午 12:15 (UTC) 运行 |
0 |
18 |
? |
* |
MON-FRI |
* |
每星期一到星期五下午 6:00 (UTC) 运行 |
0 |
8 |
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 * * ? *
删除作业和作业时间表
您可以删除不再需要的作业或作业计划。
删除任务
-
在导航窗格中,选择 Jobs。
-
选择要删除的任务,然后在 Actions 中,选择 Delete (删除)。 。
删除任务时间表
-
在导航窗格上,选择 “作业”,然后选择 “计划” 选项卡。
-
选择要删除的时间表,然后在 Actions 中,选择 Delete(删除)。 。