

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

# 使用自訂連接器編寫任務
<a name="job-authoring-custom-connectors"></a>

您可以針對 AWS Glue Studio 中的資料來源節點和資料目標節點，使用連接器和連線。

**Topics**
+ [建立將連接器用於資料來源的任務](#create-job-connectors)
+ [為使用連接器的節點設定來源屬性](#edit-connector-source)
+ [為使用連接器的節點設定目標屬性](#edit-connector-target)

## 建立將連接器用於資料來源的任務
<a name="create-job-connectors"></a>

建立新任務時，您可以為資料來源和資料目標選擇連接器。

**建立將連接器用於資料來源或資料目標的任務**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/) 開啟 AWS Glue Studio主控台。

1. 在 **Connectors (連接器)** 頁面 **Your connections (您的連線)** 資源清單中，選擇您想要在任務中使用的連線，然後選擇 **Create job (建立任務)**。

   或者，在 AWS Glue Studio **Jobs** (任務) 頁面的 **Create job** (建立任務) 下，選擇 **Source and target added to the graph** (新增至圖表的來源和目標)。在 **Source (來源)** 下拉式清單中，選擇您想要在任務中使用的自訂連接器。您也可以為 **Target (目標)** 選擇連接器。  
![\[\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/create-job-data-sources-screenshot.png)

1. 選擇 **Create (建立)** 以開啟視覺化任務編輯器。

1. 設定資料來源節點，如[為使用連接器的節點設定來源屬性](#edit-connector-source)中所述。

1. 透過新增轉換、其他資料存放區和資料目標來繼續建立 ETL 任務，如[在 AWS Glue Studio 中啟動視覺化的 ETL 任務](edit-nodes-chapter.md)中所述。

1. 藉由設定任務屬性來自訂任務執行環境，如[修改任務屬性](managing-jobs-chapter.md#edit-jobs-properties)中所述。

1. 儲存並執行任務。

## 為使用連接器的節點設定來源屬性
<a name="edit-connector-source"></a>

建立將連接器用於資料來源的任務後，視覺化任務編輯器會顯示任務圖，其中包含為連接器設定的資料來源節點。您必須設定該節點的資料來源屬性。

**為使用連接器的資料來源節點設定屬性**

1. 在任務圖中選擇連接器資料來源節點，或新增節點，然後選擇 **Node type (節點類型)** 的連接器。然後，在右側的節點詳細資訊面板中，選擇 **Data source properties (資料來源屬性)** 索引標籤 (如果尚未選取)。  
![\[\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/data-source-properties-connector-screenshot2.png)

1. 在 **Data source properties (資料來源屬性)** 索引標籤上，選擇要用於此任務的連線。

   輸入每個連線類型所需的其他資訊：

------
#### [ JDBC ]
   + **Data source input type (資料來源輸入類型)**：選擇提供資料表名稱或 SQL 查詢做為資料來源。根據您的選擇，您接著必須提供下列額外資訊：
     + **Table name (資料表名稱)**：資料來源中的資料表名稱。如果資料來源不使用術語*表*，請提供適當的資料結構名稱，如自訂連接器用量資訊 （可在 中使用） 所示 AWS Marketplace。
     + **Filter predicate (篩選述詞)**：讀取資料來源時要使用的條件子句，類似於 `WHERE` 子句，用來擷取資料的子集。
     + **Query code (查詢程式碼)**：輸入 SQL 查詢，以用來從資料來源擷取特定資料集。基本的 SQL 查詢範例是：

       ```
       SELECT column_list FROM 
                                 table_name WHERE where_clause
       ```
   + **Schema** (結構描述)：由於 AWS Glue Studio 使用儲存在連線中的資訊來存取資料來源，而不是從 Data Catalog 資料表中擷取中繼資料資訊，因此您必須提供資料來源的結構描述中繼資料。選擇 **Add schema (新增結構描述)** 開啟結構描述編輯器。

     如需如何使用結構描述編輯器的指示，請參閱[編輯自訂轉換節點的結構描述](transforms-custom.md#transforms-custom-editschema)。
   + **Partition column (分割區欄)**：(選用) 您可以選擇分割資料讀取，方法是提供 **Partition column (分割區欄)**、**Lower bound (下限)**、**Upper bound (上限)**，以及 **Number of partitions (分割區數量)**。

     `lowerBound` 和 `upperBound` 值用於決定分割區步幅，而不是用於篩選資料表中的列。資料表中的所有列都會進行分割並傳回。
**注意**  
欄分割為用於讀取資料的查詢新增一個額外的分割條件。使用查詢而不是資料表名稱時，您應該驗證查詢是否適用於指定的分割條件。例如：  
如果您的查詢格式為 `"SELECT col1 FROM table1"`，則透過在使用分割區欄的查詢結尾附加 `WHERE` 子句來測試查詢。
如果您的查詢格式為 `"SELECT col1 FROM table1 WHERE col2=val"`，則透過使用 `AND` 和使用分割區欄的表達式擴展 `WHERE` 子句來測試查詢。
   + **Data type casting (資料類型轉換)**：如果資料來源使用的是 JDBC 中不可用的資料類型，請使用本區段指定來自資料來源的資料類型應該如何轉換為 JDBC 資料類型。您可以指定最多 50 個不同的資料類型轉換。資料來源中使用相同資料類型的所有欄都會以相同的方式轉換。

     例如，如果您在資料來源中有三個使用 `Float` 資料類型的欄，而且您指出 `Float` 資料類型應轉換為 JDBC `String` 資料類型，則使用 `Float` 資料類型的全部三個欄都會轉換為 `String` 資料類型。
   + **Job bookmark keys (任務書籤索引鍵)**：任務書籤可協助 AWS Glue 維護狀態資訊，以及防止重新處理舊資料。指定一個或多個資料行作為書籤索引鍵。AWS Glue Studio 使用書籤索引鍵追蹤在該任務執行期間所處理的資料。您用於自訂書籤索引鍵的任何欄必須是嚴格單調地增加或減少，但允許有間隙。

     如果您輸入多個書籤索引鍵，則它們會結合在一起，形成單一複合索引鍵。複合任務書籤索引鍵不應包含重複的欄。如果您沒有指定書籤索引鍵，依預設，AWS Glue Studio 會使用主索引鍵做為書籤索引鍵，前提是主索引鍵依序遞增或遞減 (沒有間隙)。如果資料表沒有主索引鍵，但已啟用任務書籤屬性，您必須提供自訂任務書籤索引鍵。否則，搜尋要用作預設值的主索引鍵將會失敗，而且任務執行將會失敗。
   + **Job bookmark keys sorting order (任務書籤索引鍵排序順序)**：選擇索引鍵值是依序增加還是減少。

------
#### [ Spark ]
   + **Schema** (結構描述)：由於 AWS Glue Studio 使用儲存在連線中的資訊來存取資料來源，而不是從 Data Catalog 資料表中擷取中繼資料資訊，因此您必須提供資料來源的結構描述中繼資料。選擇 **Add schema (新增結構描述)** 開啟結構描述編輯器。

     如需如何使用結構描述編輯器的指示，請參閱[編輯自訂轉換節點的結構描述](transforms-custom.md#transforms-custom-editschema)。
   + **Connection options (連線選項)**：視需要輸入其他索引鍵值組，以提供額外的連線資訊或選項。例如，您可以輸入資料庫名稱、資料表名稱、使用者名稱和密碼。

     例如，對於 OpenSearch，您可以輸入下列索引鍵/值對，如[教學課程：使用 AWS Glue Connector for Elasticsearch](tutorial-elastisearch-connector.md)中所述：
     + `es.net.http.auth.user` : `username`
     + `es.net.http.auth.pass` : `password` 
     + `es.nodes` : `https://<Elasticsearch endpoint>`
     + `es.port` : `443`
     + `path`: `<Elasticsearch resource>`
     + `es.nodes.wan.only` : `true`

   如需要使用的最小連線選項範例，請參閱 GitHub 上的範例測試指令碼 [MinimalSparkConnectorTest.scala](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Spark/MinimalSparkConnectorTest.scala)，它顯示了您通常會在連線中提供的連線選項。

------
#### [ Athena ]
   + **Table name (資料表名稱)**：資料來源中的資料表名稱。如果您使用連接器從 Athena-CloudWatch Logs 中讀取，您將輸入資料表名稱 `all_log_streams`。
   + **Athena schema name (Athena 結構描述名稱)**：選擇您 Athena 資料來源中對應至包含資料表之資料庫中的結構描述。如果您使用連接器從 Athena-CloudWatch Logs 中讀取，您將輸入類似於 `/aws/glue/name` 的結構描述名稱。
   + **Schema** (結構描述)：由於 AWS Glue Studio 使用儲存在連線中的資訊來存取資料來源，而不是從 Data Catalog 資料表中擷取中繼資料資訊，因此您必須提供資料來源的結構描述中繼資料。選擇 **Add schema (新增結構描述)** 開啟結構描述編輯器。

     如需如何使用結構描述編輯器的指示，請參閱[編輯自訂轉換節點的結構描述](transforms-custom.md#transforms-custom-editschema)。
   + **Additional connection options (其他連線選項)**：視需要輸入其他索引鍵值組，以提供額外的連線資訊或選項。

   如需範例，請參閱位於 [https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Athena) 的 `README.md` 檔案。在本文件的步驟中，範例程式碼顯示了所需的最少連線選項，也就是 `tableName`、`schemaName` 以及 `className`。程式碼範例會將這些選項指定為 `optionsMap` 變數的一部分，但您可以為您的連線指定它們，然後使用該連線。

------

1. (選用) 提供必要資訊之後，您可以選擇節點詳細資訊面板中的 **Output schema (輸出結構描述)** 索引標籤來檢視為資料來源產生的資料結構描述。此索引標籤上顯示的結構描述將由您新增至任務圖的任何子節點使用。

1. (選用) 設定節點屬性和資料來源屬性之後，您可以選擇節點詳細資訊面板中的 Data preview (資料預覽) 索引標籤來預覽資料來源中的資料集。當您第一次針對任務中的任何節點選擇此索引標籤時，系統會提示您提供 IAM 角色以存取資料。使用此功能需支付相關費用，並且在您提供 IAM 角色後立即開始計費。

## 為使用連接器的節點設定目標屬性
<a name="edit-connector-target"></a>

如果您將連接器用於資料目標類型，則必須設定資料目標節點的屬性。

**為使用連接器的資料目標節點設定屬性**

1. 在任務圖中選擇連接器資料目標節點。然後，在右側的節點詳細資訊面板中，選擇 **Data target properties (資料目標屬性)** 索引標籤 (如果尚未選取)。

1. 在 **Data target properties (資料目標屬性)** 索引標籤上，選擇用來寫入目標的連線。

   輸入每個連線類型所需的其他資訊：

------
#### [ JDBC ]
   + **Connection (連線)**：選擇要用於連接器的連線。如需如何建立連線的詳細資訊，請參閱[建立連接器的連線](creating-connections.md)。
   + **Table name (資料表名稱)**：資料目標中的資料表名稱。如果資料目標不使用術語*表*，則提供適當的資料結構名稱，如自訂連接器用量資訊 （可在 中使用） 所示 AWS Marketplace。
   + **Batch size (批次大小)** (選用)：輸入單一作業中要在目標資料表中插入的列數或記錄數。預設值為 1000 列。

------
#### [ Spark ]
   + **Connection (連線)**：選擇要用於連接器的連線。如果您先前未建立連線，請選擇 **Create connection (建立連線)** 建立一個。如需如何建立連線的詳細資訊，請參閱[建立連接器的連線](creating-connections.md)。
   + **Connection options (連線選項)**：視需要輸入其他索引鍵值組，以提供額外的連線資訊或選項。您可以輸入資料庫名稱、資料表名稱、使用者名稱和密碼。

     例如，對於 OpenSearch，您可以輸入下列索引鍵/值對，如[教學課程：使用 AWS Glue Connector for Elasticsearch](tutorial-elastisearch-connector.md)中所述：
     + `es.net.http.auth.user` : `username`
     + `es.net.http.auth.pass` : `password` 
     + `es.nodes` : `https://<Elasticsearch endpoint>`
     + `es.port` : `443`
     + `path`: `<Elasticsearch resource>`
     + `es.nodes.wan.only` : `true`

   如需要使用的最小連線選項範例，請參閱 GitHub 上的範例測試指令碼 [MinimalSparkConnectorTest.scala](https://github.com/aws-samples/aws-glue-samples/tree/master/GlueCustomConnectors/development/Spark/MinimalSparkConnectorTest.scala)，它顯示了您通常會在連線中提供的連線選項。

------

1. 提供必要資訊之後，您可以選擇節點詳細資訊面板中的 **Output schema (輸出結構描述)** 索引標籤來檢視為資料來源產生的資料結構描述。