

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

# AWS Glue：運作方式
<a name="how-it-works"></a>

AWS Glue 使用其他服務 AWS 來協調您的 ETL （擷取、轉換和載入） 任務，以建置資料倉儲和資料湖並產生輸出串流。 會AWS Glue呼叫 API 操作來轉換您的資料、建立執行期日誌、儲存您的任務邏輯，以及建立通知來協助您監控任務執行。AWS Glue 主控台會將這些服務連接至受管應用程式，讓您可以專注於建立和監控 ETL 任務。主控台會代表您執行管理與任務開發的操作。您可向 AWS Glue 提供登入資料和其他屬性，以存取資料來源和寫入資料目標。

AWS Glue 會負責佈建和管理執行任務負載所需的資源。您不必為 ETL 工具建立基礎設施，AWS Glue 會為您處理。需要資源時，為了減少啟動時間，AWS Glue 會從其執行個體暖集區中使用一個執行個體來執行您的任務負載。

有了 AWS Glue，您就可以使用資料目錄中的資料表定義來建立任務。任務由指令碼組成，其中包含執行所需資料轉換任務的指示。您可使用觸發，以排程或指定事件的結果啟動任務。您可決定目標資料存放的位置，以及將何種來源資料填入目標。根據您的輸入，AWS Glue 會將您的資料從來源轉換為目標格式。或者，您也可以在 AWS Glue 主控台或 API 中提供自訂指令碼，以根據您的特定需求處理您的資料。

**資料來源和目的地**  
AWS Glue for Spark 允許您從多個系統和資料庫​讀取和寫入資料，包括：
+ Amazon S3
+ Amazon DynamoDB
+ Amazon Redshift
+ Amazon Relational Database Service (Amazon RDS)
+ 第三方 JDBC 可存取的資料庫
+ MongoDB 和 Amazon DocumentDB (with MongoDB compatibility)
+ 其他 Marketplace 連接器和 Apache Spark 外掛程式

**資料串流**  
AWS Glue for Spark 可串流下列系統中的資料：
+ Amazon Kinesis Data Streams
+ Apache Kafka

AWS Glue 可在數個 AWS 區域使用。如需詳細資訊，請參閱 [AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) 中的 Amazon Web Services 一般參考區域與端點。

**Topics**
+ [隔離執行的無伺服器 ETL 任務](#how-it-works-isolation)
+ [AWS Glue 概念](components-key-concepts.md)
+ [AWS Glue 元件](components-overview.md)
+ [AWS Glue for Spark 和 AWS Glue for Ray](how-it-works-engines.md)
+ [將半結構化結構描述轉換為具有 AWS Glue 的關聯式結構描述](schema-relationalize.md)
+ [AWS Glue 類型系統](glue-types.md)

## 隔離執行的無伺服器 ETL 任務
<a name="how-it-works-isolation"></a>

AWS Glue 會透過您選擇的引擎、Spark 或 Ray，在無伺服器環境中執行 ETL 任務。AWS Glue 會在其服務帳戶中佈建和管理的虛擬資源上執行這些任務。

AWS Glue 旨在執行以下項目：
+ 區域客戶資料。
+ 保護客戶傳輸中和靜態的資料。
+ 僅在回應客戶要求且必要時存取客戶資料，而使用的是暫時、縮減範圍的登入資料，或經客戶同意使用其帳戶中的 IAM 角色。

在佈建 ETL 任務時，您應提供 Virtual Private Cloud (VPC) 中的輸入資料來源和輸出資料目標。此外，您應提供存取資料來源和目標所需的 IAM 角色、VPC ID、子網路 ID 和安全群組。AWS Glue 會針對每個值組 (客戶帳戶 ID、IAM 角色、子網路 ID、安全群組) 建立新的環境，並在網路和管理層級與 AWS Glue 服務帳戶中的其他所有環境隔離。

 您可以在 AWS 帳戶中建立和設定 AWS Glue 資源，例如資料目錄、任務和爬蟲程式。然後，這些資源會與您在建立過程中指定的 IAM 角色和網路設定 (子網路和安全群組) 關聯。

AWS Glue 會使用私有 IP 地址在您的子網路中建立彈性網路界面。任務會使用這些彈性網路介面存取您的資料來源和資料目標。任務執行環境傳入、傳出以及在環境內部往來的流量，都由您的 VPC 與聯網政策控管，只有一項例外：對 AWS Glue 程式庫的呼叫，可透過 AWS Glue VPC 將流量代理至 AWS Glue API 操作。所有的 AWS Glue API 都會加以記錄；因此，資料擁有者可啟用 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/) 以稽核 API 存取，並將稽核記錄傳送至您的帳戶。

AWS Glue 執行 ETL 任務的 受管環境會受到與其他服務相同的安全實務保護 AWS 。如需實務和共同安全責任的概觀，請參閱[AWS 安全程序簡介](https://docs.aws.amazon.com/whitepapers/latest/introduction-aws-security/welcome.html)白皮書。

# AWS Glue 概念
<a name="components-key-concepts"></a>

 AWS Glue 是一種全受管 ETL （擷取、轉換、載入） 服務，可讓您輕鬆地在不同資料來源和目標之間移動資料。關鍵元件包括：
+  **Data Catalog**：中繼資料存放區，其中包含 ETL 工作流程的資料表定義、任務定義和其他控制資訊。
+  **編目程式**：連接至資料來源、推斷資料結構描述，以及在 Data Catalog 中建立中繼資料表定義的程式。
+  **ETL 任務**：用於從來源擷取資料、使用 Apache Spark 指令碼轉換資料，並將其載入目標的商業邏輯。
+  **觸發條件**：用於根據排程或事件啟動任務執行的機制。

 典型工作流程包括：

1.  在 Data Catalog 中定義資料來源和目標。

1.  使用編目程式將資料來源的資料表中繼資料填入 Data Catalog。

1.  使用轉換指令碼定義 ETL 任務，以移動和處理資料。

1.  隨需或根據觸發條件執行任務。

1.  使用儀表板監控任務效能。

 下圖顯示 AWS Glue 環境的架構。

![\[在 AWS Glue中填入 Data Catalog 和處理 ETL 資料流程的基本概念。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/HowItWorks-overview.png)


您可以在 中定義*任務* AWS Glue ，以完成從資料來源擷取、轉換和載入 (ETL) 資料至資料目標所需的工作。您通常會執行以下動作：
+ 針對資料存放區來源，定義一個*爬蟲程式*，將中繼資料資料表定義填入 AWS Glue Data Catalog 。您將爬蟲程式指向資料存放區，爬蟲程式在 Data Catalog 中建立資料表定義。針對串流來源，手動定義 Data Catalog 資料表並指定資料串流屬性。

  除了資料表定義之外， 還 AWS Glue Data Catalog 包含定義 ETL 任務所需的其他中繼資料。當您要定義一個任務以轉換資料時，您使用此中繼資料。
+ AWS Glue 可以產生指令碼來轉換您的資料。或者，您可以在 AWS Glue 主控台或 API 中提供指令碼。
+ 您可以隨需執行任務，也可以設定在發生指定的*觸發*時開始執行任務。觸發可以是以時間為基礎的排程或事件。

  當您的任務執行時，指令碼會從資料來源擷取資料、轉換資料，然後將資料載入到您的資料目標。指令碼在 AWS Glue中的 Apache Spark 環境執行。

**重要**  
中的資料表和資料庫 AWS Glue 是 中的物件 AWS Glue Data Catalog。它們包含中繼資料，不包含來自資料存放區的資料。


|  | 
| --- |
|  **文字型資料，例如 CSVs，必須在 中編碼 AWS Glue ，`UTF-8`才能成功處理。如需詳細資訊，請參閱 Wikipedia 中的 [UTF-8](https://en.wikipedia.org/wiki/UTF-8)。**  | 

## AWS Glue 術語
<a name="components-major"></a>

AWS Glue 依賴多個元件的互動來建立和管理擷取、轉換和載入 (ETL) 工作流程。

### AWS Glue Data Catalog
<a name="components-data-catalog"></a>

持久性中繼資料存放區 AWS Glue。它包含資料表定義、任務定義和其他控制資訊，以管理您的 AWS Glue 環境。每個 AWS 帳戶 AWS Glue Data Catalog 在每個區域各有一個 。

### 分類器
<a name="components-classifier"></a>

決定資料結構描述。 AWS Glue 提供常見檔案類型的分類器，例如 CSV、JSON、AVRO、XML 等。它還提供常見的使用 JDBC 連線的關聯式資料庫管理系統的分類器。您可以撰寫自己的分類器，方法是使用 grok 模式或在 XML 文件中指定資料列標籤。

### 連線
<a name="components-connection"></a>

包含連接到資料存放區所需屬性的 Data Catalog 物件。

### 爬蟲程式
<a name="components-crawler"></a>

連接到資料存放區 (來源或目標) 的程式，它會執行已排定優先順序的分類器清單，判斷您資料的結構描述，然後在 AWS Glue Data Catalog建立中繼資料資料表。

### 資料庫
<a name="components-database"></a>

一組相關 Data Catalog 資料表定義會整理在邏輯群組中。

### 資料存放區、資料來源、資料目標
<a name="components-data-store"></a>

*資料存放區*是一種適用於永久存放資料的儲存庫。範例包括 Amazon S3 儲存貯體和關聯式資料庫。*資料來源*是做為程序或轉換輸入的資料存放區。*資料目標*是寫入程序或轉換的目標資料存放區。

### 開發端點
<a name="components-development-endpoint"></a>

可用來開發和測試 AWS Glue ETL 指令碼的環境。

### 動態框架
<a name="components-dynamic-frame"></a>

支援巢狀資料 (例如結構和陣列) 的分散式資料表。每個記錄都是自我描述，專為具有半結構化資料的結構描述彈性而設計。每筆記錄都包含資料和描述該資料的結構描述。您可以在 ETL 指令碼中使用動態框架和 Apache Spark DataFrames，並在它們之間進行轉換。動態框架為資料清除和 ETL 提供了一組進階轉換。

### 任務
<a name="components-job"></a>

執行 ETL 任務時所需的商業邏輯。它由轉換指令碼、資料來源和資料目標所組成。任務的執行由可透過排程或事件觸發的觸發器起始。

### 任務效能儀表板
<a name="features-job-monitoring"></a>

AWS Glue 為您的 ETL 任務提供全面的執行儀表板。儀表板會顯示特定時間範圍內之任務執行的相關資訊。

### 筆記本介面
<a name="components-notebook-server"></a>

更優異的筆記本體驗，只要按一下即可輕鬆撰寫任務和探索資料。自動設定筆記本和連線。您可以使用以 Jupyter 筆記本為基礎的筆記本界面，使用無 AWS Glue 伺服器 Apache Spark ETL 基礎設施以互動方式開發、偵錯和部署指令碼和工作流程。您也可以在筆記本環境中執行臨機操作查詢、資料分析和視覺化 (例如，資料表和圖形)。

### 指令碼
<a name="components-script"></a>

從來源擷取資料、轉換資料的程式碼，並將其載入 target. AWS Glue generates PySpark 或 Scala 指令碼。

### 資料表
<a name="components-table"></a>

呈現您資料的中繼資料定義。無論您的資料位於 Amazon Simple Storage Service (Amazon S3) 檔案、Amazon Relational Database Service (Amazon RDS) 資料表或其他資料集，皆由資料表定義資料的結構描述。中的資料表 AWS Glue Data Catalog 包含資料欄名稱、資料類型定義、分割區資訊，以及基本資料集的其他中繼資料。資料結構描述會顯示在 AWS Glue 資料表定義中。實際資料會保留在其原始資料存放區中，無論是檔案還是關聯式資料庫資料表。 AWS Glue 會在 中記錄您的檔案和關聯式資料庫資料表 AWS Glue Data Catalog。當您建立 ETL 時，它們會做為來源和目標。

### 轉換
<a name="components-transform"></a>

用於將資料處理為不同格式的程式碼邏輯。

### 觸發條件
<a name="components-trigger"></a>

啟動 ETL 任務。觸發可根據排程時間或事件加以定義。

### 視覺化任務編輯器
<a name="features-visual-editor"></a>

 視覺化任務編輯器是一個新的圖形介面，可讓您輕鬆地在 AWS Glue中建立、執行及監控擷取、轉換和載入 (ETL) 任務。您可以視覺化地編寫資料轉換工作流程，在 AWS Glue Apache Spark 型無伺服器 ETL 引擎上順暢地執行它們，並在任務的每個步驟中檢查結構描述和資料結果。

### 工作程序
<a name="components-worker"></a>

使用 時 AWS Glue，您只需支付 ETL 任務執行所需的時間。您無需管理資源，不用預付款項，也不必為啟動或關機時間付費。我們會根據您執行 ETL 任務所使用的 **資料處理單位** (或 DPU) 數量，以小時費率計費。單一資料處理單位 (DPU) 也稱為 *worker*. AWS Glue comes，具有多種工作者類型，可協助您選取符合您任務延遲和成本需求的組態。工作者提供標準、G.1X、G.2X、G.4X、G.8X、G.12X、G.16X、G.025X 和記憶體最佳化 R.1X、R.2X、R.4X、R.8X 組態。

# AWS Glue 元件
<a name="components-overview"></a>

AWS Glue 提供主控台和 API 操作，以設定和管理擷取、轉換和載入 (ETL) 工作負載。您可以透過多種語言特定的 SDKs和 AWS Command Line Interface () 使用 API 操作AWS CLI。如需使用 的詳細資訊 AWS CLI，請參閱 [AWS CLI 命令參考](https://docs.aws.amazon.com/cli/latest/reference/)。

AWS Glue 使用 AWS Glue Data Catalog 來存放有關資料來源、轉換和目標的中繼資料。資料目錄可用於替換 Apache Hive 中繼存放區。 AWS Glue Jobs system 提供受管基礎設施，用於定義、排程和執行資料上的 ETL 操作。如需 AWS Glue API 的詳細資訊，請參閱 [AWS Glue API](aws-glue-api.md)。

## AWS Glue 主控台
<a name="console-intro"></a>

您可以使用 AWS Glue 主控台來定義和協調 ETL 工作流程。主控台會在 AWS Glue Data Catalog 和 中呼叫數個 API 操作 AWS Glue Jobs system ，以執行下列任務：
+ 定義任務、資料表、爬蟲程式和連線等 AWS Glue 物件。
+ 排程爬蟲程式執行的時間。
+ 定義事件或排程以進行任務觸發。
+ 搜尋和篩選 AWS Glue 物件清單。
+ 編輯轉換指令碼。

## AWS Glue Data Catalog
<a name="data-catalog-intro"></a>

 AWS Glue Data Catalog 是您在 AWS 雲端中的持久性技術中繼資料存放區。

每個 AWS 帳戶 AWS Glue Data Catalog 在每個 AWS 區域各有一個 。每個資料目錄都是組織成資料庫的高度可擴展資料表集合。資料表是存放在 Amazon RDS、Apache Hadoop 分散式檔案系統、Amazon OpenSearch Service 等來源中的結構化或半結構化資料集合的中繼資料表示。 AWS Glue Data Catalog 提供統一的儲存庫，其中不同的系統可以存放和尋找中繼資料，以追蹤資料孤島中的資料。然後，您可以使用中繼資料在各個應用程式中以一致的方式來查詢和轉換資料。

 您可以將 Data Catalog 與 AWS Identity and Access Management 政策和 Lake Formation 搭配使用，以控制對資料表和資料庫的存取。這樣一來，您可讓企業中不同的群組將資料安全地發佈給更廣泛的組織，同時以更精細的方式保護敏感資訊。

資料目錄、CloudTrail 和 Lake Formation 也可為您提供完整的稽核和管理功能，包括結構描述變更追蹤以及資料存取控制。這有助於確保資料不會受到不適當的修改或意外遭到共享。

 如需有關保護和稽核 AWS Glue Data Catalog的資訊，請參閱：
+  **AWS Lake Formation** – 如需詳細資訊，請參閱《 AWS Lake Formation開發人員指南》[https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html)中的*什麼是AWS Lake Formation ？*。
+  **CloudTrail** – 如需詳細資訊，請參閱 *AWS CloudTrail 使用者指南*中的[什麼是 CloudTrail？](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)。

以下是使用 的其他 AWS 服務和開放原始碼專案 AWS Glue Data Catalog：
+ **Amazon Athena** - 如需詳細資訊，請參閱[https://docs.aws.amazon.com/athena/latest/ug/understanding-tables-databases-and-the-data-catalog.html](https://docs.aws.amazon.com/athena/latest/ug/understanding-tables-databases-and-the-data-catalog.html)《Amazon Athena 使用者指南》中的*了解資料表、資料庫和資料目錄*。
+ **Amazon Redshift Spectrum** - 如需詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》[https://docs.aws.amazon.com/redshift/latest/dg/c-using-spectrum.html](https://docs.aws.amazon.com/redshift/latest/dg/c-using-spectrum.html)中的*使用 Amazon Redshift Spectrum 以查詢外部資料*。
+ **Amazon EMR** - 如需詳細資訊，請參閱《Amazon EMR 管理指南》**中的[針對 AWS Glue Data Catalog的 Amazon EMR 存取使用資源類型政策](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html)。
+ client **AWS Glue Data Catalog for Apache Hive 中繼存放**區 – 如需此 GitHub 專案的詳細資訊，請參閱 [AWS Glue Data Catalog Client for Apache Hive 中繼存放區](https://github.com/awslabs/aws-glue-data-catalog-client-for-apache-hive-metastore)。



## AWS Glue 爬蟲程式和分類器
<a name="crawling-intro"></a>

AWS Glue 也可讓您設定爬蟲程式，以掃描各種儲存庫中的資料、對其進行分類、從中擷取結構描述資訊，以及自動將中繼資料存放在 中 AWS Glue Data Catalog。然後 AWS Glue Data Catalog ， 可用於引導 ETL 操作。

如需有關如何設定爬蟲程式和分類器的詳細資訊，請參閱 [使用編目程式填入 Data Catalog](add-crawler.md)。如需如何使用 AWS Glue API 編寫爬蟲程式和分類器的詳細資訊，請參閱 [爬蟲程式和分類器 API](aws-glue-api-crawler.md)。

## AWS Glue ETL 操作
<a name="etl-script-intro"></a>

使用 Data Catalog 中的中繼資料， AWS Glue 可以自動產生具有 AWS Glue 擴充功能的 Scala 或 PySpark （適用於 Apache Spark 的 Python API) 指令碼，您可以使用和修改這些指令碼來執行各種 ETL 操作。例如，您可以擷取、清理和轉換原始資料，然後將結果存放在不同的儲存庫，以供查詢和分析。這種指令碼可能會將 CSV 檔案轉換為關聯形式，並將其儲存在 Amazon Redshift。

如需如何使用 AWS Glue ETL 功能的詳細資訊，請參閱 [Spark 指令碼程式設計](aws-glue-programming.md)。

## 在 中串流 ETL AWS Glue
<a name="streaming-etl-intro"></a>

AWS Glue 可讓您使用持續執行的任務對串流資料執行 ETL 操作。 AWS Glue 串流 ETL 是以 Apache Spark 結構化串流引擎為基礎，並且可以從 Amazon Kinesis Data Streams、Apache Kafka 和 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 擷取串流。串流 ETL 可以清理和轉換串流資料，並將其載入 Amazon S3 或 JDBC 資料存放區。在 中使用串流 ETL AWS Glue 來處理事件資料，例如 IoT 串流、點擊串流和網路日誌。

如果您知道串流資料來源的結構描述，您可以在資料目錄資料表中指定它。如果沒有，您可以啟用串流 ETL 任務中的結構描述偵測。然後，任務會自動從傳入資料判斷結構描述。

串流 ETL 任務可以使用 AWS Glue 內建轉換和 Apache Spark 結構化串流原生的轉換。如需詳細資訊，請參閱 Apache Spark 網站上的[串流 DataFrames/資料集上的操作](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#operations-on-streaming-dataframesdatasets)。

如需詳細資訊，請參閱[在 AWS Glue 中串流 ETL 任務](add-job-streaming.md)。

## AWS Glue 任務系統
<a name="job-orchestration-intro"></a>

 AWS Glue Jobs system 提供受管基礎設施來協調您的 ETL 工作流程。您可以在 中建立任務 AWS Glue ，將用來擷取、轉換和傳輸資料的指令碼自動化到不同的位置。您可以排程和鏈結任務，或透過新資料到達等事件予以觸發。

如需使用 的詳細資訊 AWS Glue Jobs system，請參閱 [監控 AWS Glue](monitor-glue.md)。如需使用 AWS Glue Jobs system API 編寫程式的詳細資訊，請參閱[任務 API](aws-glue-api-jobs.md)。

## 視覺化 ETL 元件
<a name="glue-studio-ui-components"></a>

 AWS Glue 可讓您透過可操作的視覺化畫布建立 ETL 任務。

![\[螢幕擷取畫面顯示資源面板已關閉。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/glue-studio-canvas.png)


### ETL 任務選單
<a name="glue-studio-ui-components-menu"></a>

 畫布頂端的選單選項允許您存取有關任務的各種檢視和組態詳細資訊。
+  **視覺化**：視覺化任務編輯器畫布。您可以在此處新增節點以建立任務。
+  **指令碼** – ETL 任務的指令碼表示法。 AWS Glue 會根據任務的視覺化表示法產生指令碼。您也可以編輯或下載指令碼。
**注意**  
 如果您選擇編輯指令碼，任務撰寫體驗會永久轉換為僅指令碼模式。之後，您將無法再使用視覺化編輯器來編輯任務。在選擇編輯指令碼之前，您應該新增所有任務來源、轉換和目標，並使用視覺化編輯器進行全部所需變更。
+  **任務詳細資訊**：「任務詳細資訊」索引標籤可讓您透過設定任務屬性來設定任務。有一些基本屬性，例如任務的名稱和描述、IAM 角色、任務類型、 AWS Glue 版本、語言、工作者類型、工作者數目、任務書籤、彈性執行、淘汰數目和任務逾時；還有進階屬性，例如連線、程式庫、任務參數和索引標籤。
+  **執行**：任務執行後，可存取此索引標籤以檢視過去的任務執行情況。
+  **資料品質**：資料品質會評估和監控資料資產的品質。您可以在此索引標籤上進一步了解如何使用資料品質，並將資料品質轉換新增至您的任務。
+  **排程**：您已排程的任務會顯示在此索引標籤中。如果沒有連接到此任務的排程，則無法存取此索引標籤。
+  **版本控制**：您可以將任務設定至 Git 儲存庫，以便將 Git 與任務搭配使用。

### 視覺化 ETL 面板
<a name="glue-studio-ui-components-panels"></a>

 當您在畫布中工作時，有多個面板可協助您設定節點，或協助您預覽資料並檢視輸出結構描述。
+  **屬性**：當您在畫布上選擇節點時，會顯示「屬性」面板。
+  **資料預覽**：「資料預覽」面板提供資料輸出的預覽，讓您可以在執行任務和檢查輸出之前做出決定。
+  **輸出結構描述**：「輸出結構描述」索引標籤可讓您檢視和編輯轉換節點的結構描述。

 **調整面板大小** 

 您可以調整畫面右側的「屬性」面板以及包含「資料預覽」和「輸出結構描述」索引標籤的底部面板的大小，方法是按一下面板邊緣，然後左右或上下拖曳它。
+  **屬性面板**：按一下並拖曳畫面右側的畫布邊緣，然後將其向左拖曳以擴大寬度，即可調整屬性面板的大小。依預設，面板會收合，而當選取節點時，屬性面板會以預設大小開啟。
+  **資料預覽和輸出結構描述面板**：按一下並拖曳畫面底部的畫布底部邊緣，然後將底部面板向上拖曳以擴大其高度，即可調整底部面板的大小。依預設，面板會收合，而當選取節點時，底部面板會以預設大小開啟。

### 任務畫布
<a name="glue-studio-ui-components-canvas"></a>

 您可以直接在視覺化 ETL 畫布上新增、移除和移動/重新排序節點。您可以將其視為工作區，以建立功能齊全的 ETL 任務，該任務從資料來源開始，且能以資料目標結束。

 當您使用畫布上的節點時，工具列可以協助您放大和縮小、移除節點、建立或編輯節點之間的連線、變更任務流程方向，以及復原或重做動作。

![\[螢幕擷取畫面顯示資源面板已關閉。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/glue-studio-canvas-toolbar.png)


 浮動工具列會錨定至畫布右上角的大小，並包含多個執行動作的影像：
+  **版面圖示**：工具列中的第一個圖示是版面圖示。依預設，視覺任務的方向是從上到下。它透過從左到右水平排列節點來重新排列視覺化任務的方向。再次按一下版面圖示可將方向變更回從上到下。
+  **重新置中圖示**：重新置中圖示會透過將畫布檢視置中來變更畫布檢視。您可以將其與大型任務一起使用，以返回到中心位置。
+  **放大圖示**：放大圖示可放大畫布上節點的大小。
+  **縮小圖示**：縮小圖示可縮小畫布上節點的大小。
+  **垃圾桶圖示**：垃圾桶圖示會從視覺化任務中移除節點。您必須先選取節點。
+  **復原圖示**：復原圖示可回復對視覺化任務執行的最後一個動作。
+  **重做圖示**：重做圖示可重複對視覺化任務執行的最後一個動作。

 **使用迷你地圖** 

![\[該螢幕擷取畫面顯示迷你地圖的特寫。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/glue-studio-canvas-minimap.png)


### 資源面板
<a name="glue-studio-ui-components-canvas-resource-panel"></a>

 資源面板包含您可用的所有資料來源、轉換動作和連線。透過按一下 "\$1" 圖示開啟畫布上的資源面板。這將開啟資源面板。

 若要關閉資源面板，按一下資源面板右上角的 **X**。這樣會隱藏面板，直到您準備好再次開啟面板為止。

![\[螢幕擷取畫面顯示已開啟的資源面板。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/resource-panel-open.png)


#### 熱門轉換與資料
<a name="glue-studio-ui-components-popular-transforms"></a>

 面板頂部有一個**熱門轉換與資料**的集合。這些節點通常用於 AWS Glue。選擇一個節點以將其新增至畫布。您也可以按一下**熱門轉換與資料**標題旁的三角形，隱藏**熱門轉換與資料**。

 在**熱門轉換與資料**區段下方，您可以搜尋轉換和資料來源節點。結果會在您輸入時顯示。您新增至搜尋查詢的字母越多，結果清單就會越小。搜尋結果會根據節點名稱和/或描述填入。選擇對應節點以將其新增至畫布。

#### 轉換與資料
<a name="glue-studio-ui-components-transforms-and-data"></a>

 有兩個索引標籤可將節點組織為**轉換**與**資料**。

 **轉換**：當您選擇**轉換**索引標籤時，可以選取所有可用的轉換。選擇一個轉換以將其新增至畫布。您也可以選擇轉換清單底部的**新增轉換**，這樣會開啟文件的新頁面，以建立[自訂視覺化轉換](https://docs.aws.amazon.com/glue/latest/ug/custom-visual-transform.html)。按照這些步驟操作可建立自己的轉換。然後，您的轉換就會出現在可用轉換清單中。

 **資料**：資料索引標籤包含**來源**和**目標**的所有節點。您可以按一下「來源」或「目標」標題旁的三角形，隱藏來源和目標。再次按一下三角形可取消隱藏來源和目標。選擇來源或目標節點以將其新增至畫布。您也可以選擇**管理連線**來新增連線。這將打開主控台中的「連接器」頁面。

# AWS Glue for Spark 和 AWS Glue for Ray
<a name="how-it-works-engines"></a>

在 Apache Spark (AWS Glue ETL) AWS Glue 的 中，您可以使用 PySpark 編寫 Python 程式碼來大規模處理資料。Spark 是解決此問題的常見解決方案，但若資料工程師的工作背景是以 Python 為主，可能會發現轉換不直觀。Spark DataFrame 模型並非極具 Python 風格 (Pythonic)，其在建置時反映 Scala 語言與 Java 執行階段。

在 中 AWS Glue，您可以使用 Python shell 任務來執行原生 Python 資料整合。這些任務會在單一 Amazon EC2 執行個體上運作，並受該執行個體容量的限制。這會限制您可以處理的資料輸送量，讓處理大數據時的維護成本變得昂貴。

AWS Glue for Ray 可讓您擴展 Python 工作負載，而無需大量投資學習 Spark。您可善用 Ray 表現更加出色的某些情況。您可以借助提供給您的選擇同時運用 Spark 和 Ray 的優勢。

AWS Glue ETL 和 AWS Glue for Ray 下方不同，因此它們支援不同的功能。請查看文件判斷支援的功能。

## 什麼是 AWS Glue Ray？
<a name="how-it-works-ray"></a>

Ray 是開放原始碼的分散式運算架構，可用於縱向擴展工作負載並專注處理 Python。如需 Ray 的詳細資訊，請參閱 [Ray 網站](https://www.ray.io/)。 AWS Glue Ray 任務和互動式工作階段可讓您在 中使用 Ray AWS Glue。

您可以使用 AWS Glue for Ray 來撰寫 Python 指令碼，以進行跨多部機器平行執行的運算。在 Ray 任務與互動式工作階段中，您可以使用熟悉的 Python 程式庫 (例如 pandas)，讓您的工作流程易於撰寫和執行。如需有關 Ray 資料集的詳細資訊，請參閱 Ray 文件中的 [Ray 資料集](https://docs.ray.io/en/latest/data/dataset.html)。如需有關 pandas 的詳細資訊，請參閱 [Pandas 網站](https://pandas.pydata.org/)。

當您使用 AWS Glue for Ray 時，您可以針對企業規模的大數據執行 pandas 工作流程，只需要幾行程式碼。您可以從 AWS Glue 主控台或 SDK 建立 Ray AWS 任務。您也可以開啟 AWS Glue 互動式工作階段，在無伺服器 Ray 環境中執行程式碼。 AWS Glue Studio 尚不支援 中的視覺化任務。

AWS Glue for Ray 任務可讓您依排程執行指令碼，或回應來自 Amazon EventBridge 的事件。任務會存放 CloudWatch 中的日誌資訊和監控統計資訊，讓您了解指令碼的運作狀態和可靠性。如需 AWS Glue 任務系統的詳細資訊，請參閱 [在 中使用 Ray 任務 AWS Glue](ray-jobs-section.md)。

Ray 會根據負載，將處理程序分配至一組機器叢集，藉此自動調整 Python 程式碼的擴展任務。這會改善某些工作負載的每美元效能。使用 Ray 任務，我們已將自動擴展原生建置到 AWS Glue 任務模型中，因此您可以充分利用此功能。Ray 任務在 AWS Graviton 上執行，因此整體價格效能更高。

除了節省成本，您還可以使用原生自動擴展功能來執行 Ray 任務負載，而無須耗費時間進行叢集維護、調整和管理。您可以立即使用熟悉的開放原始碼程式庫，例如 pandas 和 AWS SDK for Pandas。這些程式庫可提高您在 AWS Glue for Ray 上進行開發時的反覆運算速度。當您使用 AWS Glue for Ray 時，您將能夠快速開發和執行符合成本效益的資料整合工作負載。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/OJ3ZngYTyNE/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/OJ3ZngYTyNE)


# 將半結構化結構描述轉換為具有 AWS Glue 的關聯式結構描述
<a name="schema-relationalize"></a>

您很可能會想將半結構化資料轉換為關聯式資料表。在概念上，這是將階層式結構描述展平為關聯式結構描述。AWS Glue 可以迅速為您執行此轉換作業。

半結構化資料通常包含用以識別資料內實體的標記。這種資料有巢狀資料結構，而無固定式結構描述。如需半結構化資料的詳細資訊，請參閱 Wikipedia 的 [Semi-structured data](https://en.wikipedia.org/wiki/Semi-structured_data) (半結構化資料)。

關聯式資料即為列和欄組成的資料表。資料表之間的關係可以用主金鑰 (PK) 至外部金鑰 (FK) 的關係表示。如需詳細資訊，請參閱 Wikipedia 的 [Relational database](https://en.wikipedia.org/wiki/Relational_database) (關聯式資料庫)。

AWS Glue 使用爬蟲程式推斷半結構化資料的結構描述。接著，資料會藉由擷取、轉換和載入 (ETL) 任務轉換為關聯式結構描述。例如，您可能想將 Amazon Simple Storage Service (Amazon S3) 來源檔案的 JSON 資料剖析為 Amazon Relational Database Service (Amazon RDS) 資料表。了解 AWS Glue 如何處理結構描述之間的差異，可協助您了解轉換程序。

此圖表說明 AWS Glue 如何將半結構化結構描述轉換為關聯式結構描述。

![\[從半結構化轉換為關聯式結構描述之流程圖。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/HowItWorks-schemaconversion.png)


此圖展示了以下要點：
+ 單值 `A` 直接轉換為關聯式欄。
+ `B1` 和 `B2` 值對轉換為兩個關聯式欄。
+ 結構 `C` 以及子結構 `X` 和 `Y` 轉換為兩個關聯式欄。
+ 陣列 `D[]` 轉換為關聯式欄以及指向另一個關聯式資料表的外部金鑰 (FK)。除了主金鑰 (PK)，第二個關聯式資料表還有包含陣列項目之位移和值的欄位。

# AWS Glue 類型系統
<a name="glue-types"></a>

 AWS Glue 使用多種類型的系統，透過以非常不同方式存放資料的資料系統提供多樣化的界面。本文件會混淆 AWS Glue 類型系統和資料標準。

## AWS Glue Data Catalog 類型
<a name="glue-types-catalog"></a>

Data Catalog 是存放於各種資料系統 (中繼存放區) 的資料表和欄位登錄檔。當 AWS Glue 元件，例如 AWS Glue 爬蟲程式和 Glue with Spark AWS 任務，寫入 Data Catalog 時，它們會使用內部類型系統來追蹤欄位類型。這些值會顯示在 Glue AWS 主控台資料表結構描述的**資料類型**欄中。這種類型的系統是以 Apache Hive 的類型系統為基礎。如需有關 Apache Hive 類型系統的詳細資訊，請參閱 Apache Hive 維基中的[類型](https://cwiki.apache.org/confluence/display/hive/languagemanual+types)。如需特定類型和支援的詳細資訊，範例會在 Glue AWS 主控台中提供，做為結構描述建置器的一部分。

### 驗證、相容性和其他用途
<a name="w2aac11c31b5b5"></a>

Data Catalog 不會驗證寫入至類型欄位的類型。當 AWS Glue 元件讀取和寫入 Data Catalog 時，它們將彼此相容。 AWS Glue 元件也旨在保持與 Hive 類型的高度相容性。不過， AWS Glue 元件不保證相容於所有 Hive 類型。這可讓您在使用 Data Catalog 中的資料表時，實現與 Athena DDL 等工具互通性。

由於 Data Catalog 不會驗證類型，因此其他服務可能會使用 Data Catalog，透過與 Hive 類型系統或任何其他系統高度符合的系統來追蹤類型。

## Glue AWS with Spark 指令碼中的類型
<a name="glue-types-spark"></a>

當 AWS Glue with Spark 指令碼解譯或轉換資料集時，我們會提供 `DynamicFrame`，這是您的資料集在指令碼中使用的記憶體內表示法。`DynamicFrame` 的目標與 Spark `DataFrame` 類似 – 其會為您的資料集建模，以便 Spark 可對您的資料排程和執行轉換。我們保證，`DynamicFrame` 的類型表示法可透過提供 `toDF` 和 `fromDF` 方法與 `DataFrame` 相互相容。

如果可推斷類型資訊或提供給 `DataFrame`，除非另有記錄，否則可進行推斷或提供給 `DynamicFrame`。當我們針對特定資料格式提供最佳化的讀取器或寫入器時，如果 Spark 可讀取或寫入您的資料，則我們提供的讀取器或寫入器將受到文件限制。如需有關讀取器或寫入器的詳細資訊，請參閱 [AWS Glue for Spark 中的輸入與輸出的資料格式選項](aws-glue-programming-etl-format.md)。

### 選項類型
<a name="w2aac11c31b7b7"></a>

`DynamicFrames` 提供一種機制，用於在資料集中進行欄位建模，該資料集的值可能在磁碟上具有不一致的資料列類型。例如，一個欄位可在某些資料列中保留做為字串存放的數字，而在其他資料列中則保留做為整數存放的數字。這種機制是一種稱為 `Choice` 的記憶體類型。我們提供轉換，例如 `ResolveChoice`方法，將 Choice 資料欄解析為具體類型。 AWS Glue ETL 不會在正常操作過程中將 Choice 類型寫入 Data Catalog；選擇類型僅在資料集的 DynamicFrame 記憶體模型內容中存在。如需選項類型用量的範例，請參閱 [程式碼範例：使用 ResolveChoice、Lambda 和 ApplyMapping 的資料準備](aws-glue-programming-python-samples-medicaid.md)。

## AWS Glue 爬蟲程式類型
<a name="glue-types-crawler"></a>

爬蟲程式旨在為您的資料集產生一致、可用的結構描述，然後將其存放在 Data Catalog 中，以用於其他 AWS Glue 元件和 Athena。爬蟲程式根據 Data Catalog 上一節內容 [AWS Glue Data Catalog 類型](#glue-types-catalog) 中所述來處理類型。若要在「選項」類型案例中產生可用的類型，其中一個資料欄包含兩個或多個類型的值，爬蟲程式將會建立 `struct` 類型來對潛在類型進行建模。