View a markdown version of this page

建立和使用AWS Glue DataBrew配方任務 - AWS Glue DataBrew開發人員指南

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立和使用AWS Glue DataBrew配方任務

使用 DataBrew 配方任務來清理和標準化 DataBrew 資料集中的資料,並將結果寫入您選擇的輸出位置。執行配方任務不會影響資料集或基礎來源資料。當任務執行時,它會以唯讀方式連線至來源資料。任務輸出會寫入您在 Amazon S3、AWS Glue Data Catalog或支援的 JDBC 資料庫中定義的輸出位置。

使用下列程序來建立 DataBrew 配方任務。

建立配方任務
  1. 登入AWS 管理主控台,並在 https://https://console.aws.amazon.com/databrew/ 開啟 DataBrew 主控台。

  2. 從導覽窗格中選擇 JOBS,選擇配方任務索引標籤,然後選擇建立任務

  3. 輸入任務的名稱,然後選擇建立配方任務

  4. 針對任務輸入,輸入您要建立之任務的詳細資訊:要處理的資料集名稱,以及要使用的配方。

    配方任務使用 DataBrew 配方來轉換資料集。若要使用配方,請務必先發佈。

  5. 設定您的任務輸出設定。

    為您的任務輸出提供目的地。如果您沒有為輸出目的地設定 DataBrew 連線,請先在 DATASETS 索引標籤上進行設定,如 中所述資料來源和輸出支援的連線。選擇下列其中一個輸出目的地:

    • Amazon S3,無論是否AWS Glue Data Catalog支援

    • Amazon Redshift,無論是否AWS Glue Data Catalog支援

    • JDBC

    • Snowflake 資料表

    • AWS Glue Data Catalog支援 的 Amazon RDS 資料庫資料表。Amazon RDS 資料庫資料表支援下列資料庫引擎:

      • Amazon Aurora

      • MySQL

      • Oracle

      • PostgreSQL

      • Microsoft SQL Server

    • Amazon S3 AWS Glue Data Catalog支援。

    對於以 為基礎的AWS Glue Data Catalog輸出AWS Lake Formation,DataBrew 僅支援取代現有的檔案。在此方法中,會取代檔案,以保持資料存取角色的現有 Lake Formation 許可不變。此外,DataBrew 會優先考慮資料表中的 Amazon S3 位置AWS Glue Data Catalog。因此,您無法在建立配方任務時覆寫 Amazon S3 位置。

    在某些情況下,任務輸出中的 Amazon S3 位置與資料目錄資料表中的 Amazon S3 位置不同。在這些情況下,DataBrew 會使用目錄資料表中的 Amazon S3 位置自動更新任務定義。當您更新或啟動現有的任務時,它會執行此操作。

  6. 僅針對 Amazon S3 輸出目的地,您有進一步的選擇:

    1. 選擇 Amazon S3 的其中一個可用資料輸出格式、選用的壓縮,以及選用的自訂分隔符號。輸出檔案支援的分隔符號與輸入相同:逗號、冒號、分號、管道、標籤、插入符號、反斜線和空格。如需格式化詳細資訊,請參閱下表。

      Format (格式) 副檔名 (未壓縮) 副檔名 (壓縮)

      逗號分隔值

      .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
      AWS Glue Parquet 不支援 .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
      Tableau Hyper 不支援 不適用
    2. 選擇是否輸出單一檔案或多個檔案。Amazon S3 的檔案輸出有三個選項:

      • 自動產生檔案 (建議) – 讓 DataBrew 決定輸出檔案的最佳數量。

      • 單一檔案輸出 – 產生單一輸出檔案。此選項可能會導致額外的任務執行時間,因為需要後置處理。

      • 多個檔案輸出 – 您是否已指定任務輸出的檔案數目。有效值為 2–999。如果使用資料欄分割,或輸出中的資料列數目少於您指定的檔案數目,則輸出的檔案可能少於您指定的檔案數目。

    3. (選用) 選擇配方任務輸出的資料欄分割。

      資料欄分割提供另一種將配方任務輸出分割成多個檔案的方式。資料欄分割可以與新的或現有的 Amazon S3 輸出或新的 Data Catalog Amazon S3 輸出搭配使用。它不能與現有的 Data Catalog Amazon S3 資料表搭配使用。輸出檔案是根據您指定的資料欄名稱值。如果您指定的資料欄名稱是唯一的,產生的 Amazon S3 資料夾路徑會根據資料欄名稱的順序而定。

      如需資料欄分割的範例,請參閱資料欄分割的範例下列的 。

  7. (選用) 選擇啟用任務輸出的加密,以加密 DataBrew 寫入輸出位置的任務輸出,然後選擇加密方法:

    • 使用 SSE-S3 加密 – 使用伺服器端加密搭配 Amazon S3 受管加密金鑰來加密輸出。

    • Use AWS Key Management Service(AWS KMS) – 使用 加密輸出AWS KMS。若要使用此選項,請選擇您要使用的AWS KMS金鑰的 Amazon Resource Name (ARN)。如果您沒有AWS KMS金鑰,您可以選擇建立金鑰來建立AWS KMS金鑰

  8. 針對存取許可,選擇允許 DataBrew 寫入輸出位置的AWS Identity and Access Management(IAM) 角色。對於您的帳戶AWS擁有的位置,您可以選擇AwsGlueDataBrewDataAccessRole服務受管角色。這樣做可讓 DataBrew 存取您擁有AWS的資源。

  9. 進階任務設定窗格中,您可以為您的任務執行方式選擇更多選項:

    • 單位數量上限 – DataBrew 使用多個運算節點處理任務,並行執行。預設節點數量為 5。節點數量上限為 149。

    • 任務逾時 – 如果任務需要超過您在此設定的執行分鐘數,則會失敗並出現逾時錯誤。預設值為 2,880 分鐘或 48 小時。

    • 重試次數 – 如果任務在執行時失敗,DataBrew 可以嘗試再次執行。根據預設,不會重試任務。

    • 為任務啟用 Amazon CloudWatch Logs – 允許 DataBrew 將診斷資訊發佈至 CloudWatch Logs。這些日誌可用於故障診斷目的,或進一步了解任務的處理方式。

  10. 對於排程任務,您可以套用 DataBrew 任務排程,讓您的任務在特定時間或重複執行。如需詳細資訊,請參閱使用排程自動化任務執行

  11. 設定如您想要,請選擇建立任務。或者,如果您想要立即執行任務,請選擇建立並執行任務

您可以在任務執行時檢查其狀態,以監控任務的進度。當任務執行完成時,狀態會變更為成功。任務輸出現在可在您選擇的輸出位置使用。

DataBrew 會儲存您的任務定義,以便您稍後可以執行相同的任務。若要重新執行任務,請從導覽窗格中選擇任務。選擇您要使用的任務,然後選擇執行任務

資料欄分割的範例

作為資料欄分割的範例,假設您指定三個資料欄,其中每一列都包含兩個可能值之一。資料Dept欄可以有 值AdminEng。資料Staff-type欄可以有 值Part-timeFull-time。資料Location欄可以有 值Office1Office2。任務輸出的 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 任務
  1. 登入AWS 管理主控台,並在 https://https://console.aws.amazon.com/databrew/ 開啟 DataBrew 主控台。

  2. 在導覽窗格中,選擇任務。選擇您要執行的任務,然後選擇執行任務

若要在特定時間或定期執行 DataBrew 任務,請建立 DataBrew 任務排程。然後,您可以將任務設定為根據排程執行。

建立 DataBrew 任務排程
  1. 在 DataBrew 主控台的導覽窗格中,選擇任務。選擇排程索引標籤,然後選擇新增排程

  2. 輸入排程的名稱,然後選擇執行頻率的值:

    • 週期性 – 選擇您希望任務執行的頻率 (例如,每 12 小時)。然後選擇要在哪一天執行任務。或者,您可以輸入任務執行的時間。

    • 在特定時間 – 輸入您希望任務執行的時間。然後選擇要在哪一天執行任務。

    • 輸入 CRON – 輸入有效的 Cron 表達式來定義任務排程。如需詳細資訊,請參閱使用配方任務的 cron 表達式

  3. 當您滿意設定後,請選擇 Save (儲存)。

將任務與排程建立關聯
  1. 在導覽窗格中,選擇任務

  2. 選擇您要使用的任務,然後針對動作選擇編輯。

  3. 排程任務窗格中,選擇關聯排程。選擇您要使用的排程名稱。

  4. 當您滿意設定後,請選擇 Save (儲存)。

使用配方任務的 cron 表達式

Cron 表達式有六個必要欄位,以空格隔開。語法如下。

Minutes Hours Day-of-month Month Day-of-week Year

在上述語法中,下列值和萬用字元用於指定的欄位。

欄位 Values (數值) 萬用字元

分鐘

0–59

, - * /

小時

0–23

, - * /

月中的日

1–31

, - * ? / L W

1-12 或 JAN-DEC

, - * /

週中的日

1-7 或 SUN-SAT

, - * ? / L

1970-2199

, - * /

請依照下列方式使用這些萬用字元:

  • , (逗號) 萬用字元包含額外的值。在 Month欄位中, JAN,FEB,MAR包含 1 月、2 月和 3 月。

  • - (en dash) 萬用字元指定範圍。在 Day 欄位中,1–15 包含指定月份的第 1 天到第 15 天。

  • * (星號) 包含欄位中所有的值。在 Hours欄位中,* 包含每小時。

  • / (斜線) 萬用字元用於指定增量。在 Minutes欄位中,您可以輸入 1/10以指定每 10 分鐘,從小時的第一分鐘開始 (例如,第 11、第 21 和第 31 分鐘)。

  • ? (問號) 萬用字元用於表示不限定任何一個。例如,假設在 Day-of-month 欄位中輸入 7。如果您不在乎一週的第七天是哪一天,則可以輸入 Day-of-week 欄位中。

  • Day-of-monthDay-of-week 欄位中的 L 萬用字元指定當月或當週的最後一天。

  • W 萬用字元在 Day-of-month 欄位可指定任務日。在 Day-of-month 欄位,3W 指定的是月份中最接近第三個任務日的日子。

這些欄位和值有下列限制:

  • 您無法在同一個 cron 表達式中指定 Day-of-monthDay-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 表達式,在 UTC 每天 12:15 執行任務。

15 12 * * ? *

刪除任務和任務排程

如果您不再需要任務或任務排程,可以將其刪除。

若要刪除工作
  1. 在導覽窗格中,選擇任務

  2. 選擇您要刪除的任務,然後針對動作選擇刪除。

刪除任務排程
  1. 在導覽窗格中,選擇任務,然後選擇排程索引標籤。

  2. 選擇您要刪除的排程,然後在動作中,選擇刪除。