

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

# 中的 Amazon Q 資料整合 AWS Glue
<a name="q"></a>

中的 Amazon Q 資料整合 AWS Glue 是 的新生成式 AI 功能 AWS Glue ，可讓資料工程師和 ETL 開發人員使用自然語言建置資料整合任務。工程師和開發人員可以要求 Amazon Q 撰寫任務、疑難排解問題，以及回答有關 AWS Glue 和資料整合的問題。

## 什麼是 Amazon Q？
<a name="q-what-is-amazon-q"></a>

**注意**  
採用 Amazon Bedrock 技術： AWS 實作[自動濫用偵測](https://docs.aws.amazon.com/bedrock/latest/userguide/abuse-detection.html)。因為 Amazon Q 資料整合是建立在 Amazon Bedrock 的基礎上，所以使用者可以充分利用 Amazon Bedrock 中實作的控制措施，強制執行人工智慧 (AI) 的安全、保障和負責任使用目標。

Amazon Q 是生成式人工智慧 (AI) 支援的對話式助理，可協助您了解、建置、擴展和操作 AWS 應用程式。支援 Amazon Q 的模型已透過高品質 AWS 內容增強，讓您擁有更完整、可行且參考的答案，以加速您的建置 AWS。如需詳細資訊，請參閱[什麼是 Amazon Q？](https://docs.aws.amazon.com/amazonq/latest/aws-builder-use-ug/what-is.html)

## AWS Glue中的 Amazon Q 資料整合是什麼？
<a name="q-key-features"></a>

中的 Amazon Q 資料整合 AWS Glue 包含下列功能：
+ **聊天** – 中的 Amazon Q 資料整合 AWS Glue 可以用英文回答有關 AWS Glue 和資料整合網域的自然語言問題，例如 AWS Glue 來源和目的地連接器、 AWS Glue ETL 任務、資料目錄 AWS Lake Formation、爬蟲程式和其他功能文件，以及最佳實務。中的 Amazon Q 資料整合會以step-by-step指示 AWS Glue 回應，並包含其資訊來源的參考。
+ **資料整合程式碼產生** – 中的 Amazon Q 資料整合 AWS Glue 可以回答有關 AWS Glue ETL 指令碼的問題，並根據自然語言的英文問題產生新的程式碼。
+ **故障診斷** – 中的 Amazon Q 資料整合 AWS Glue 旨在協助您了解 AWS Glue 任務中的錯誤，並提供step-by-step指示，以找出根本原因並解決問題。

**注意**  
中的 Amazon Q 資料整合 AWS Glue 不會使用您的對話內容，在對話期間通知未來的回應。在 中與 Amazon Q 資料整合的每次對話 AWS Glue ，都與您先前或未來的對話無關。

## 是否使用 AWS Glue中的 Amazon Q 資料整合？
<a name="q-working-with"></a>

在 Amazon Q 面板中，您可以請求 Amazon Q 為 AWS Glue ETL 指令碼產生程式碼，或回答有關 AWS Glue 功能或故障診斷錯誤的問題。回應是 PySpark 中的 ETL 指令碼，並提供逐步指示來自訂、檢閱和執行指令碼。系統會根據資料整合知識庫產生對問題的回應，其中包含摘要和來源 URL 以供參考。

例如，您可以要求 Amazon Q 「*請提供從 Snowflake 讀取、重新命名欄位和寫入 Redshift 的 Glue 指令碼*」，而 中的 Amazon Q 資料整合 AWS Glue 將傳回可執行所請求動作 AWS Glue 的任務指令碼。您可以檢閱產生的程式碼，確保其符合請求的意圖。如果滿意，您可以在生產環境中將其部署為 AWS Glue 任務。您可以要求整合解釋錯誤和失敗，並提出解決方案，藉此疑難排解作業。Amazon Q 可以回答有關 AWS Glue 或資料整合最佳實務的問題。

![\[使用 AWS Glue中的 Amazon Q 資料整合的範例。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/q-chat-experience-1.gif)


以下是示範 中的 Amazon Q 資料整合如何 AWS Glue 協助您建置的範例問題 AWS Glue：

AWS Glue ETL 程式碼產生：
+ 撰寫從 S3 讀取 JSON 的 AWS Glue 指令碼，使用套用映射轉換欄位並寫入 Amazon Redshift
+ 如何撰寫從 DynamoDB 讀取、套用 DropNullFields 轉換並以 Parquet 形式寫入 S3 的 AWS Glue 指令碼？
+ 提供從 MySQL 讀取的 AWS Glue 指令碼、根據我的商業邏輯捨棄一些欄位，以及寫入 Snowflake
+ 撰寫 AWS Glue 任務以從 DynamoDB 讀取，並以 JSON 形式寫入 S3 
+ 協助我開發 AWS Glue Data Catalog 到 S3 的 AWS Glue 指令碼
+ 撰寫 AWS Glue 任務以從 S3 讀取 JSON、捨棄 null 並寫入 Redshift

AWS Glue 功能說明：
+ 如何使用 AWS Glue Data Quality？
+ 如何使用 AWS Glue 任務書籤？
+ 如何啟用 AWS Glue 自動擴展？
+  AWS Glue 動態影格和 Spark 資料影格之間的差異是什麼？
+ 支援哪些不同類型的連線 AWS Glue？

AWS Glue 故障診斷：
+ 如何對 AWS Glue 任務上的記憶體不足 (OOM) 錯誤進行故障診斷？
+ 設定 AWS Glue Data Quality 時可能會看到哪些錯誤訊息，以及如何修正這些錯誤訊息？
+ 如何修正錯誤為 Amazon S3 存取遭拒 AWS Glue 的任務？
+ 如何解決 AWS Glue 任務上資料隨機播放的問題？

## 與 Amazon Q 資料整合互動的最佳實務
<a name="q-best-practices"></a>

以下是與 Amazon Q 資料整合互動的最佳實務：
+ 與 Amazon Q 資料整合互動時，請提出特定問題，在有複雜的請求時反覆運算，並驗證答案的準確性。
+ 以自然語言提供資料整合時，請盡可能具體地協助助理了解您需要的內容。與其詢問「從 S3 擷取資料」，提供更多詳細資訊，例如「撰寫從 S3 擷取 JSON 檔案的 AWS Glue 指令碼」。
+ 執行產生的指令碼之前，請先進行檢閱以確保準確性。如果產生的指令碼有錯誤或不符合您的意圖，請提供指示給助理，說明如何更正。
+ 生成式 AI 技術是一種新穎的技術，在反應中可能會出現錯誤，有時也稱為幻覺。在您的環境或工作負載中使用之前，請先測試並檢閱所有程式碼是否有錯誤和漏洞。

## AWS Glue 服務改進中的 Amazon Q 資料整合
<a name="q-service-improvement"></a>

為了協助 中的 Amazon Q 資料整合 AWS Glue 提供最相關的資訊 AWS ，我們可能會使用 Amazon Q 的特定內容，例如您向 Amazon Q 提出的問題及其回應，以改善服務。

如需有關我們使用哪些內容以及如何選擇退出的資訊，請參閱《*Amazon Q Developer 使用者指南*》中的 [Amazon Q Developer 服務改善](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/service-improvement.html)。

## 考量事項
<a name="q-considerations"></a>

使用 AWS Glue中的 Amazon Q 資料整合之前，請考慮下列項目：
+ 目前，程式碼產生僅適用於 PySpark 核心。產生的程式碼適用於以 Python Spark 為基礎的 AWS Glue 任務。
+ 如需 中 Amazon Q 資料整合的程式碼產生功能支援組合的詳細資訊 AWS Glue，請參閱 [支援的程式碼產生功能](q-supported-actions.md)。

# 在 中設定 Amazon Q 資料整合 AWS Glue
<a name="q-setting-up"></a>

以下各節提供設定 AWS Glue中的 Amazon Q 資料整合的資訊。

**Topics**
+ [設定 IAM 許可權限](q-setting-up-permissions.md)

# 設定 IAM 許可權限
<a name="q-setting-up-permissions"></a>

本主題說明您為 Amazon Q 聊天體驗設定的 IAM 許可，以及 AWS Glue Studio 筆記本體驗。

**Topics**
+ [設定 Amazon Q 聊天的 IAM 許可](#q-setting-up-permissions-amazon-q-chat)
+ [設定 AWS Glue Studio 筆記本的 IAM 許可](#q-setting-up-permissions-notebooks)

## 設定 Amazon Q 聊天的 IAM 許可
<a name="q-setting-up-permissions-amazon-q-chat"></a>

授予許可給 中 Amazon Q 資料整合所使用的 APIs AWS Glue 需要適當的 AWS Identity and Access Management (IAM) 許可。您可以透過將下列自訂 AWS 政策連接至 IAM 身分 （例如使用者、角色或群組） 來取得許可：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StartCompletion",
        "glue:GetCompletion"
      ],
      "Resource": [
        "arn:aws:glue:*:*:completion/*"
      ]
    }
  ]
}
```

------

## 設定 AWS Glue Studio 筆記本的 IAM 許可
<a name="q-setting-up-permissions-notebooks"></a>

若要在 AWS Glue Studio 筆記本中啟用 Amazon Q 資料整合，請確定下列許可已連接至筆記本 IAM 角色：

**注意**  
`codewhisperer` 字首是與 Amazon Q Developer 合併之服務的舊名稱。如需詳細資訊，請參閱《[Amazon Q Developer 重新命名 - 變更摘要](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/service-rename.html)》。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StartCompletion",
        "glue:GetCompletion"
      ],
      "Resource": [
        "arn:aws:glue:*:*:completion/*"
      ]
    },
    {
      "Sid": "AmazonQDeveloperPermissions",
      "Effect": "Allow",
      "Action": [
        "codewhisperer:GenerateRecommendations"
      ],
      "Resource": "*"
    }
  ]
}
```

------

**注意**  
中的 Amazon Q 資料整合 AWS Glue 沒有可透過 SDK AWS 以程式設計方式使用的 APIs。IAM 政策中會使用下列兩個 APIs，透過 Amazon Q 聊天面板或 AWS Glue Studio 筆記本來啟用此體驗： `StartCompletion`和 `GetCompletion`。

### 指派權限
<a name="q-assigning-permissions"></a>

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ IAM Identity Center AWS 中的使用者和群組：建立許可集。請按照 *AWS IAM Identity Center 使用者指南*中[建立許可集](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html)的說明進行操作。
+ 在 IAM 中透過身分提供者管理的使用者：建立聯合身分的角色。請按照 *IAM 使用者指南* 的 [為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) 中的指示進行操作。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照 *IAM 使用者指南* 的 [為 IAM 使用者建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) 中的指示進行操作。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循《*IAM 使用者指南*》的[新增許可到使用者 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

# 支援的程式碼產生功能
<a name="q-supported-actions"></a>

 以下是 Amazon Q 資料整合的程式碼產生功能的組合。


| 來源和目標 | 轉換 | 
| --- | --- | 
| S3 具有以下格式類型：json、csv、parquet、hudi、delta | Drop | 
| AWS Glue Data Catalog | Aggregate | 
| Redlake | DropDuplicates | 
| Amazon DynamoDB | Join | 
| MySQL | 篩選條件 | 
| Oracle | RenameColumns | 
| PostgresSQL | FillNull | 
| Microsoft SQL Server | DropNull | 
| Amazon DocumentDB / MongoDB | WithColumns | 
| Snowflake | SQL 查詢 | 
| Google BigQuery | UNION | 
| Teradata | Select | 
| Amazon OpenSearch Service |  | 
| Vertica |  | 
| SAP HANA |  | 
| Amazon Redshift |  | 

# 互動範例
<a name="q-using-example-interactions"></a>

中的 Amazon Q 資料整合 AWS Glue 可讓您在 Amazon Q 面板中輸入您的問題。可以輸入有關 AWS Glue提供的資料整合功能的問題。將傳回詳細答案以及參考文件。

另一個使用案例是產生 AWS Glue ETL 任務指令碼。可以詢問有關如何執行資料擷取、轉換、載入任務的問題。將傳回產生的 PySpark 指令碼。

**Topics**
+ [Amazon Q 聊天互動](#q-using-example-interactions)
+ [AWS Glue Studio 筆記本互動](#q-using-example-interactions-notebooks)

## Amazon Q 聊天互動
<a name="q-using-example-interactions"></a>

在 AWS Glue 主控台上，開始撰寫新任務，並詢問 Amazon Q：*「在資料庫 glue\$1db 中建立 Glue ETL 流程連線到兩個 Glue 目錄資料表場地和事件，在場地的 venueid 和事件的 e\$1venueid 上加入結果，然後篩選條件為 venuestate='DC' 的場地狀態，並以 CSV 格式寫入 s3：//amzn-s3-demo-bucket/codegen/BDB-9999/output/""。*

![\[在 中 AWS Glue 針對產生的 ETL 指令碼要求 Amazon Q 資料整合的範例。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/Q-SIDEPANEL-GS.gif)


 您會注意到程式碼已產生。透過此回應，您可以學習並了解如何為目的編寫 AWS Glue 程式碼。可以將產生的程式碼複製/貼上至指令碼編輯器並設定預留位置。在任務上設定 IAM 角色和 AWS Glue 連線後，請儲存並執行任務。當任務完成時，可以驗證摘要資料如預期保留至 Amazon S3，並可供下游工作負載使用。

## AWS Glue Studio 筆記本互動
<a name="q-using-example-interactions-notebooks"></a>

**注意**  
 AWS Glue Studio 筆記本中的 Amazon Q Data 整合體驗仍著重於以 DynamicFrame 為基礎的資料整合流程。

新增儲存格並輸入註解，以描述您想要達成的目標。按 **Tab** 和 **Enter** 後，會顯示建議的程式碼。

首要目的是擷取資料：*"Give me code that reads a Glue Data Catalog table"*，後面跟著 *"Give me code to apply a filter transform with star\$1rating>3"* 和 *"Give me code that writes the frame into S3 as Parquet"*。

![\[使用 AWS Glue Studio 筆記本在 中要求 Amazon Q 資料整合 AWS Glue 產生之 ETL 指令碼的範例。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/q-notebook-experience-1.gif)


![\[使用 AWS Glue Studio 筆記本在 中要求 Amazon Q 資料整合 AWS Glue 產生之 ETL 指令碼的範例。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/q-notebook-experience-2.gif)


![\[使用 AWS Glue Studio 筆記本在 中要求 Amazon Q 資料整合 AWS Glue 產生之 ETL 指令碼的範例。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/q-notebook-experience-3.gif)


與 Amazon Q 聊天體驗類似，建議使用程式碼。如果按 **Tab**，則會選擇建議的程式碼。

在產生的程式碼中為您的來源填入適當的選項，以執行每個儲存格。在執行中的任何時間點，也可以使用 `show()` 方法來預覽資料集的範例。

 透過程式設計方式或選擇**執行**，將筆記本作為任務來執行。

### 複雜的提示
<a name="q-using-example-interactions-notebooks-complex-prompt"></a>

可以產生具有單一複雜提示的完整指令碼。*「我在 S3 中有 JSON 資料，在 Oracle 中有需要合併的資料。請提供 Glue 指令碼，其可從兩個來源讀取、進行聯結，然後將結果寫入到 Redshift。」*

![\[使用 AWS Glue Studio 筆記本在 中要求 Amazon Q 資料整合 AWS Glue 產生之 ETL 指令碼的範例。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/q-notebook-experience-4.gif)


您可能會注意到，在筆記本上， 中的 Amazon Q 資料整合 AWS Glue 產生的程式碼片段與 Amazon Q 聊天中產生的程式碼片段相同。

透過選擇**執行**或以程式設計方式，將筆記本作為任務來執行。

# 在 Glue AWS 中使用內容感知與 Amazon Q Data Integration
<a name="q-context-awareness"></a>

 您現在可以在 Amazon Q Data Integration 中使用查詢型內容感知和 PySpark DataFrame 程式碼產生，從而更有效地建立資料處理任務。例如，您可以使用此提示來產生 PySpark 程式碼：「建立任務以使用連線‘erp\$1conn’從 Redshift 資料表‘analytics.salesorder’載入銷售資料、篩選低於 50 美元的 order\$1amount，並以 parquet 格式儲存至 Amazon S3。」 

 Amazon Q 會根據您的提示產生指令碼，並使用問題中提供的詳細資訊來設定資料整合工作流程，例如連線組態、結構描述詳細資訊、資料庫/資料表名稱，以及用於轉換的資料欄規格。會繼續修訂諸如連線選項密碼等敏感資訊。

 如果提示中未提供必要資訊，Amazon Q 會放置預留位置，您必須在執行程式碼之前使用適當的值更新產生的程式碼。

 以下是如何使用內容感知的範例。

## 範例：互動
<a name="q-context-awareness-examples"></a>

### 讀取 Amazon S3 檔案並寫入到 Amazon S3 儲存貯體
<a name="q-context-awareness-examples-generated-script-1"></a>

 提示：`Create an AWS Glue spark job that reads a file s3://amzn-s3-demo-bucket-input-bucket-name/input-filename.csv and saves it into the parquet file under directory s3://amzn-s3-demo-bucket-output-bucket-name/output-s3-prefix/`

```
import sys
from awsglue.transforms import *
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

sc = SparkContext.getOrCreate()
spark = SparkSession.builder.getOrCreate()

# Script generated for node S3DataSource
S3DataSource_dsource1 = spark.read.format("csv").load(
    "s3://amzn-s3-demo-bucket-input-bucket-name/input-filename.csv"
)

# Script generated for node S3DataSink
S3DataSource_dsource1.write.format("parquet").mode("append").save(
    "s3://amzn-s3-demo-bucket-output-bucket-name/output-s3-prefix/"
)
```

![\[向 Glue 中的 Amazon Q AWS 資料整合要求產生 ETL 指令碼的範例。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/context-awareness-lakehouse-example.gif)


### 從 Lakehouse 取得資料並寫入到資料庫
<a name="q-context-awareness-examples-generated-script-2"></a>

 提示：`write an ETL script to read from a Lakehouse table my-table in database my-database and write it to a RDS MySQL table my-target-table`

 對於未提供資訊的欄位 (例如，MySQL 資料接收需要 connectionName，在產生的程式碼中預設具有預留位置 <connection-name>)，會保留一個預留位置，以便您在執行指令碼之前填寫所需資訊。

 產生的指令碼：

```
import sys
from awsglue.transforms import *
from pyspark.context import SparkContext
from pyspark.sql import SparkSession
from connectivity.adapter import CatalogConnectionHelper

sc = SparkContext.getOrCreate()
spark = SparkSession.builder.getOrCreate()

# Script generated for node S3DataSource
S3DataSource_dsource1 = spark.read.format("parquet").load(
    "s3://amzn-lakehouse-demo-bucket/my-database/my-table"
)

# Script generated for node ConnectionV2DataSink
ConnectionV2DataSink_dsink1_additional_options = {"dbtable": "my-target-table"}
CatalogConnectionHelper(spark).write(
    S3DataSource_dsource1,
    "mysql",
    "<connection-name>",
    ConnectionV2DataSink_dsink1_additional_options,
)
```

![\[向 Glue 中的 Amazon Q AWS 資料整合要求產生 ETL 指令碼的範例。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/context-awareness-example-interactions.gif)


### 範例：完整的 ETL 工作流程
<a name="q-context-awareness-complex-example"></a>

 下列範例示範如何透過下列提示，要求 AWS Glue 建立 AWS Glue 指令碼以完成完整的 ETL 工作流程：`Create a AWS Glue ETL Script read from two AWS Glue Data Catalog tables venue and event in my database glue_db_4fthqih3vvk1if, join the results on the field venueid, filter on venue state with condition as venuestate=='DC' after joining the results and write output to an Amazon S3 S3 location s3://amz-s3-demo-bucket/output/ in CSV format`。

 工作流程包含來自不同資料來源 （兩個 AWS Glue Data Catalog 資料表） 的讀取，以及讀取之後的幾個轉換，方法是聯結來自兩個讀取的結果，根據某些條件進行篩選，並以 CSV 格式將轉換的輸出寫入 Amazon S3 目的地。

 產生的任務會填入資料來源、轉換和接收操作的詳細資訊，其中包含從使用者問題中擷取的對應資訊，如下所示。

```
import sys
from awsglue.transforms import *
from pyspark.context import SparkContext
from pyspark.sql import SparkSession

sc = SparkContext.getOrCreate()
spark = SparkSession.builder.getOrCreate()

# Script generated for node CatalogDataSource
CatalogDataSource_dsource1 = spark.sql("select * from `glue_db_4fthqih3vvk1if`.`venue`")

# Script generated for node CatalogDataSource
CatalogDataSource_dsource2 = spark.sql("select * from `glue_db_4fthqih3vvk1if`.`event`")

# Script generated for node JoinTransform
JoinTransform_transform1 = CatalogDataSource_dsource1.join(
    CatalogDataSource_dsource2,
    (CatalogDataSource_dsource1["venueid"] == CatalogDataSource_dsource2["venueid"]),
    "inner",
)

# Script generated for node FilterTransform
FilterTransform_transform2 = JoinTransform_transform1.filter("venuestate=='DC'")

# Script generated for node S3DataSink
FilterTransform_transform2.write.format("csv").mode("append").save(
    "s3://amz-s3-demo-bucket/output//output/"
)
```

![\[向 Glue 中的 Amazon Q AWS 資料整合要求產生 ETL 指令碼的範例。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/context-awareness-complex-example.gif)


## 限制
<a name="q-context-awareness-limitations"></a>
+  內容傳遞：
  +  內容感知功能只會傳遞相同對話中先前使用者查詢的內容。其不會保留上一個查詢以外的內容。
+  支援節點組態：
  +  目前，內容感知僅支援各種節點所需的組態子集。
  +  未來版本中會規劃支援選用欄位。
+  可用性：
  +  Q Chat 和 SageMaker Unified Studio 筆記本支援內容感知和 DataFrame。不過，這些功能尚無法在 Glue Studio AWS 筆記本中使用。