編輯或上傳任務指令碼 - AWS 連接詞

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

編輯或上傳任務指令碼

使用 AWS Glue Studio 視覺化編輯器來編輯任務指令碼或上傳自己的指令碼。

只有當任務是使用 AWS Glue Studio 建立時,您才可以使用視覺化編輯器來編輯任務節點。如果任務是使用 AWS Glue 主控台、透過 API 命令或命令列介面 (CLI) 建立的,則您可以使用 AWS Glue Studio 中的指令碼編輯器來編輯任務指令碼、參數和排程。您也可以透過將任務轉換為僅限指令碼模式,編輯在 AWS Glue Studio 中建立之任務的指令碼。

編輯任務指令碼或上傳您自己的指令碼
  1. 如果建立新任務,請在 Jobs (任務) 頁面上,選擇 Spark script editor (Spark 指令碼編輯器) 選項來建立 Spark 任務或選擇 Python Shell script editor (Python Shell 指令碼編輯器) 來建立 Python Shell 任務。您可以撰寫新指令碼,也可以上傳現有指令碼。如果選擇 Spark script editor (Spark 指令碼編輯器),您可以編寫或上傳 Scala 或 Python 指令碼。如果選擇 Python Shell script editor (Python Shell 指令碼編輯器),您只能編寫或上傳 Python 指令碼。

    選擇建立新任務的選項後,在出現的 Options (選項) 區段中,您可以選擇以入門指令碼開始 (Create a new script with boilerplate code (使用樣板程式碼建立新指令碼)),或者您可以上傳本機檔案以作為任務指令碼使用。

    如果您選擇 Spark script editor (Spark 指令碼編輯器),您可以上傳 Python 或 Scala 指令碼檔案。Scala 指令碼的副檔名必須為 .scala。Python 指令碼必須被識別為 Python 類型的檔案。如果您選擇 Python Shell script editor (Python Shell 指令碼編輯器),您只能上傳 Python 指令碼檔案。

    完成選擇後,請選擇 Create (建立) 以建立任務並開啟視覺化編輯器。

  2. 前往新任務或儲存任務的視覺化任務編輯器,然後選擇 Script (指令碼) 索引標籤。

  3. 如果您沒有使用其中一個指令碼編輯器選項建立新任務,而且您從未編輯現有任務的指令碼,Script (指令碼) 索引標籤會顯示標題 Script (Locked) (指令碼 (已鎖定))。這表示指令碼編輯器處於唯讀模式。請選擇 Edit script (編輯指令碼) 解除鎖定指令碼以進行編輯。

    為了讓指令碼變成可編輯的,AWS Glue Studio 會將您的任務從視覺化任務轉換為僅限指令碼任務。如果您將指令碼解除鎖定以進行編輯,儲存之後就無法再使用視覺化編輯器來執行此任務。

    在確認視窗中,選擇 Confirm (確認) 繼續,或 Cancel (取消) 以保持任務可供視覺編輯。

    如果選擇 Confirm (確認)Visual (視覺效果) 索引標籤不會再出現在編輯器中。您可以使用 AWS Glue Studio 以使用指令碼編輯器來修改指令碼、修改任務詳細資訊或排程,或查看任務執行。

    注意

    在您儲存任務之前,轉換為僅限指令碼任務並不是永久性的。如果您重新整理主控台網頁,或在儲存任務之前先關閉任務,然後在視覺化編輯器中重新開啟任務,您仍然可以在視覺化編輯器中編輯個別節點。

  4. 視需要編輯指令碼。

    當您完成編輯指令碼時,選擇 Save (儲存) 儲存任務,並將任務從視覺效果永久轉換為僅限指令碼。

  5. (選用) 您可以選擇 Script (指令碼) 索引標籤上的 Download (下載) 按鈕,從 AWS Glue Studio 主控台下載指令碼。當您選擇此按鈕時,會開啟新的瀏覽器視窗,顯示其在 Amazon S3 中位置的指令碼。任務的 Job details (任務詳細資訊) 索引標籤中的 Script filename (指令碼檔案名稱)Script path (指令碼路徑) 參數會決定指令碼檔案在 Amazon S3 中的名稱和位置。

    螢幕擷取畫面顯示 AWS Glue Studio 中的視覺化編輯器,其中已選擇「Job details (任務詳細資訊)」索引標籤。此時會展開頁面上的 [Advanced properties (進階屬性)] 區段,並顯示 Script filename (指令碼檔案名稱) 和 Script path (指令碼路徑) 參數。Script filename (指令碼檔案名稱) 欄位會顯示 Join test job.py,Script path (指令碼路徑) 欄位會顯示 s3://aws-glue-assets-111122223333-u。

    當您儲存任務時,AWS Glue 會將任務指令碼儲存在這些欄位指定的位置。如果在 Amazon S3 中修改此位置的指令碼檔案,則您下次編輯任務時,AWS Glue Studio 會載入修改後的指令碼。

在 AWS Glue Studio 中建立和編輯 Scala 指令碼

當您選擇指令碼編輯器來建立任務時,依預設,任務程式設計語言被設定為 Python 3。如果您選擇編寫新的指令碼而不是上傳指令碼,則 AWS Glue Studio 會啟動一個新的指令碼,其中包含以 Python 編寫的樣板文字。如果您想改為編寫 Scala 指令碼,您必須先將指令碼編輯器設定為使用 Scala。

注意

如果您選擇 Scala 作為任務的程式設計語言,並使用視覺化編輯器來設計任務,則產生的任務指令碼將用 Scala 編寫,並且不需要進一步的操作。

在 AWS Glue Studio 中編寫新的 Scala 指令碼
  1. 建立新任務,方法是選擇 Spark script editor (Spark 指令碼編輯器) 選項。

  2. Options (選項) 下方,選擇 Create a new script with boilerplate code (使用樣板程式碼建立新指令碼)

  3. 選擇 Job details (任務詳細資訊) 索引標籤並設定 Language (語言)Scala (而不是 Python 3)。

    注意

    當您選擇 Spark script editor (Spark 指令碼編輯器) 選項建立任務,任務的 Type (類型) 屬性會自動設定為 Spark

  4. 選擇 Script (指令碼) 索引標籤。

  5. 移除 Python 樣板文字。您可以用以下 Scala 樣板文字替換它。

    import com.amazonaws.services.glue.{DynamicRecord, GlueContext} import org.apache.spark.SparkContext import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job object MyScript { def main(args: Array[String]): Unit = { val sc: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(sc) } }
  6. 在編輯器中編寫您的 Scala 任務指令碼。視需要新增其他 import 陳述式。

在 AWS Glue Studio 中建立和編輯 Python Shell 任務

當您選擇 Python shell 指令碼編輯器來建立任務時,您可以上傳現有的 Python 指令碼,或者編寫新的指令碼。如果您選擇編寫新的指令碼,樣板程式碼將新增到新的 Python 任務指令碼中。

建立新的 Python Shell 任務

請參閱在 AWS Glue Studio 中啟動任務中的指示。

Python Shell 任務支援的任務屬性與 Spark 任務支援的任務屬性不相同。下列清單說明 Job details (任務詳細資訊) 索引標籤上 Python Shell 任務的可用任務參數的變更。

  • 任務的 Type (類型) 屬性會自動設定為 Python Shell,且無法變更。

  • 會有一個任務的 Python version (Python 版本) 屬性,而不是 Language (語言)。目前,在 AWS Glue Studio 中建立的 Python Shell 任務使用 Python 3.6。

  • Glue version (Glue 版本) 屬性無法使用,因為它不適用於 Python Shell 任務。

  • 會改為顯示 Data processing units (資料處理單元) 屬性,取代 Worker type (工作者類型)Number of workers (工作者數目)。此任務屬性決定執行任務時,Python Shell 會使用多少資料處理單元 (DPU)。

  • Job bookmark (任務書籤) 屬性無法使用,因為它不支援 Python Shell 任務。

  • Advanced properties (進階屬性) 下,下列屬性不適用於 Python Shell 任務。

    • 任務指標

    • 連續記錄

    • Spark UISpark UI logs path (Spark UI 日誌路徑)

    • Dependent jars path (相依的 jar 路徑),在 Libraries (程式庫) 標題下