

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

# 使用 AWS Glue Studio 筆記本編寫程式碼
<a name="notebooks-chapter"></a>

 使用 AWS Glue Studio 中的互動式筆記本介面或 AWS Glue 中的互動式工作階段，資料工程師可以比之前更快、更輕鬆地撰寫 AWS Glue 任務。

## 限制
<a name="notebooks-chapter-limitations"></a>
+  AWS Glue Studio 筆記本不支援 Scala。

**Topics**
+ [限制](#notebooks-chapter-limitations)
+ [使用筆記本概觀](using-notebooks-overview.md)
+ [使用 AWS Glue Studio 中的筆記本建立 ETL 任務](create-notebook-job.md)
+ [筆記本編輯器元件](notebook-components.md)
+ [儲存您的筆記本和任務指令碼](save-notebook.md)
+ [管理筆記本工作階段](manage-notebook-sessions.md)
+ [將 Amazon Q Developer 與 AWS Glue Studio 筆記本搭配使用](glue-studio-notebooks-amazon-q-developer.md)

# 使用筆記本概觀
<a name="using-notebooks-overview"></a>

 AWS Glue Studio 允許您在基於 Jupyter 筆記本的筆記本介面中以互動方式編寫任務。透過 AWS Glue Studio 中的筆記本，您可以編輯任務指令碼和檢視輸出，而無需執行完整任務；可以編輯資料整合程式碼和檢視輸出，而無需執行完整任務；還可以新增 Markdown 並將筆記本儲存為 .ipynb 檔案和任務指令碼。您可以直接啟動筆記型，而無需在本機安裝軟體或管理伺服器。對程式碼感到滿意之後，只要按一下按鈕，AWS Glue Studio 就可將您的筆記本轉換為 Glue 任務。

 使用筆記本的若干優點包括：
+  無需佈建或管理叢集 
+  沒有閒置叢集要支付費用 
+  無需預先設定 
+  無需安裝 Jupyter 筆記本 
+  與 AWS Glue ETL 相同的執行時間/平台 

 透過 AWS Glue Studio 啟動筆記本，所有的設定步驟都會自動完成，以便您在幾秒鐘之後探索資料並開始開發任務指令碼。AWS Glue Studio 設定帶有 AWS Glue Jupyter 核心的 Jupyter 筆記本。您不需要設定 VPC、網路連線或開發端點，即可使用此筆記本。

 若要使用筆記本介面建立任務：
+  設定必要的 IAM 許可。
+  啟動筆記本工作階段以建立任務 
+  在筆記本的儲存格中編寫程式碼 
+  執行並測試程式碼以檢視輸出 
+  儲存任務 

 儲存您的筆記本之後，此筆記本就是完整的 AWS Glue 任務。您可以管理任務的所有方面，例如排程任務執行、設定任務參數，以及直接在筆記本旁檢視任務執行歷史記錄。

# 使用 AWS Glue Studio 中的筆記本建立 ETL 任務
<a name="create-notebook-job"></a>

**開始在 AWS Glue Studio 主控台中使用筆記本**

1.  將 AWS Identity and Access Management 政策連接至AWS Glue Studio使用者，並為 ETL 任務和筆記本建立 IAM 角色。

1.  按 [授予 IAM 角色的許可](notebook-getting-started.md#studio-notebook-permissions) 中所述，為筆記本設定其他 IAM 安全性。

1.  開啟位於 [https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/) 的 AWS Glue Studio 主控台。
**注意**  
檢查您的瀏覽器是否未封鎖第三方 Cookie。任何因預設或使用者啟用設定而封鎖第三方 Cookie 的瀏覽器，將使筆記本無法啟動。如需管理 Cookie 的詳細資訊，請參閱：
   + [Chrome](https://support.alertlogic.com/hc/en-us/articles/360018127132-Turn-Off-Block-Third-Party-Cookies-in-Chrome-for-Windows)
   + [Firefox](https://support.mozilla.org/en-US/kb/third-party-cookies-firefox-tracking-protection)
   + [Safari](https://support.apple.com/guide/safari/manage-cookies-sfri11471/mac)

1. 選擇左側導覽選單中的 **Jobs** (任務) 連結。

1.  選擇 **Jupyter 筆記本**，然後選擇 **Create** (建立) 開始新的筆記本工作階段。

1.  在 **Create job in Jupyter notebook** (在 Jupyter 筆記本中建立任務) 頁面上，提供任務名稱並選擇要使用的 IAM 角色。選擇**建立任務**。

    短時間後，會出現筆記本編輯器。

1.  新增程式碼後，必須執行儲存格以啟動工作階段。可透過多種方式執行儲存格：
   + 按下執行按鈕。
   +  使用鍵盤快速鍵：
     +  在 MacOS 上，使用 **Command** \$1 **Enter** 來執行儲存格。
     +  在 Windows 上，使用 **Shift** \$1 **Enter** 來執行儲存格。

    如需使用 Jupyter 筆記本介面撰寫程式碼的相關資訊，請參閱 *[Jupyter 筆記本使用者文件](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html)*。

1.  若要測試指令碼，請執行整個指令碼或個別儲存格。任何命令輸出將顯示在儲存格下方的區域中。

1.  在您完成開發筆記本之後，您可以儲存任務，然後執行任務。您可以在 **Script** (指令碼) 索引標籤中找到指令碼。您新增至筆記本的任何魔術命令都會遭到去除，且不會儲存為已產生之 AWS Glue 任務指令碼的一部分。AWS Glue Studio 會將 `job.commit()` 自動新增至已從筆記本內容產生之指令碼的末尾。

   如需有關執行任務的詳細資訊，請參閱 [開始任務執行](managing-jobs-chapter.md#start-jobs)。

   

# 筆記本編輯器元件
<a name="notebook-components"></a>

 筆記本編輯器介面包含下列主要區段。
+  筆記本介面 (主面板) 與工具列 
+  任務編輯索引標籤 

## 筆記本編輯器
<a name="notebook-editor"></a>

 AWS Glue Studio 筆記本編輯器是基於 Jupyter 筆記本應用程式。AWS Glue Studio 筆記本介面與 Juypter Notebook 所提供的介面類似，請參閱[筆記本使用者介面](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html?highlight=toolbar#notebook-user-interface)。互動式工作階段使用的筆記本是 Jupyter 筆記本。

 雖然 AWS Glue Studio 筆記本與 Juptyer Notebook 類似，但它在幾個關鍵方面有所不同：
+  目前 AWS Glue Studio 筆記本無法安裝擴充 
+  無法使用多個索引標籤；任務與筆記本之間存在 1:1 的關係 
+  AWS Glue Studio 筆記本沒有 Jupyter 筆記本中存在的相同頂部檔案選單 
+  AWS Glue Studio 筆記本目前僅能使用 AWS Glue 核心執行。請注意，您無法自行更新核心。

## AWS Glue Studio 任務編輯索引標籤
<a name="notebook-job-tabs"></a>

 用來與 ETL 任務互動的索引標籤位於筆記本頁面的頂端。它們類似於顯示在 AWS Glue Studio 的視覺化任務編輯器中的索引標籤，並且執行相同的動作。
+  **Notebook** (筆記本) – 使用此索引標籤檢視使用筆記本介面的任務指令碼。
+  **Job details** (任務詳細資訊) – 設定任務執行的環境和屬性。
+  **Runs** (執行) – 檢視此任務先前執行的相關資訊。
+  **Schedules** (排程) – 設定在特定時間執行任務的排程。

# 儲存您的筆記本和任務指令碼
<a name="save-notebook"></a>

 您可以隨時儲存您的筆記本和正在建立的任務指令碼。只要選擇右上角的 **Save** (儲存) 按鈕，就像使用視覺化編輯器或指令碼編輯器一樣。

 選擇 **Save** (儲存) 後，筆記本檔案將儲存在預設位置：
+  依預設，任務指令碼會儲存至 **Job Details** (任務詳細資訊) 索引標籤 **Advanced properties** (進階屬性) 下的任務詳細資訊屬性 **Script path** (指令碼路徑) 中指示的 Amazon S3 位置。任務指令碼會儲存在名為 `Scripts` 的子資料夾內。
+  依預設，筆記本檔案 (`.ipynb`) 會儲存至 **Job Details** (任務詳細資訊) 索引標籤 **Advanced properties** (進階屬性) 下的任務詳細資訊 **Script path** (指令碼路徑) 中指示的 Amazon S3 位置。筆記本檔案會儲存在名為 `Notebooks` 的子資料夾內。

**注意**  
 當您儲存任務時，任務指令碼僅包含來自筆記本的程式碼儲存格。任務指令碼中不包括 Markdown 儲存格和魔術命令。但是，`.ipynb` 檔案將包含任何 Markdown 和魔術命令。

 儲存任務之後，您就可以使用在筆記本中建立的指令碼來執行任務。

# 管理筆記本工作階段
<a name="manage-notebook-sessions"></a>

 AWS Glue Studio 中的筆記本以 AWS Glue 的互動式工作階段功能為基礎。使用互動式工作階段需要支付費用。為了協助管理成本，您可以監控為帳戶建立的工作階段，並設定所有工作階段的預設值。

## 變更所有筆記本工作階段的預設逾時
<a name="change-default-timeout"></a>

 依預設，如果筆記本已啟動並且沒有執行任何儲存格，佈建的 AWS Glue Studio 筆記本會在 12 小時後逾時。不存在相關成本，且無法設定逾時。

 一旦您執行儲存格，這便會啟動互動式工作階段。此工作階段的預設逾時時間為 48 小時。此逾時可以透過在執行儲存格之前傳遞 `%idle_timeout` 魔術命令來設定。

**若要修改 AWS Glue Studio 中筆記本的預設工作階段逾時**

1.  在筆記本中，於儲存格中輸入 `%idle_timeout` 魔術命令，並以分鐘為單位指定逾時值。

1.  例如：`%idle_timeout 15` 會將預設逾時變更為 15 分鐘。如果 15 分鐘內未使用工作階段，則工作階段會自動停止。

## 安裝其他 Python 模組
<a name="specify-default-modules"></a>

 如果您想使用 pip 將其他模組安裝到工作階段中，則可以使用 `%additional_python_modules` 將其新增至您的工作階段中：

```
%additional_python_modules awswrangler, s3://amzn-s3-demo-bucket/mymodule.whl
```

 additional\$1python\$1modules 的所有引數都傳遞給 `pip3 install -m <>` 

 如需可用 Python 模組的清單，請參閱 [Using Python libraries with AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html)。

## 變更 AWS Glue 組態
<a name="specify-default-modules"></a>

 您可以使用魔術命令來控制 AWS Glue 任務組態值。如果您要變更任務組態值，則必須在筆記本中使用適當的魔術命令。請參閱 [Magics supported by AWS Glue interactive sessions for Jupyter](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-magics.html)。

**注意**  
 無法再覆寫執行中工作階段的屬性。若要變更工作階段的組態，您可以停止工作階段、設定新的組態，然後啟動新的工作階段。

 AWS Glue 支援各種工作者類型。您可以使用 `%worker_type` 設定工作者類型。例如：`%worker_type G.2X `。可用的工作者類型包括 G.1X、G.2X、G.4X、G.8X、G.12X、G.16X、R.1X、R.2X、R.4X 和 R.8X。預設值是 G.1X。

 您還可以使用 `%number_of_workers` 指定工作者數量。例如，若要指定 40 個工作者：`%number_of_workers 40`。

 如需詳細資訊，請參閱[定義任務屬性](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)。

## 停止筆記本工作階段
<a name="stop-notebook-session"></a>

 若要停止筆記本工作階段，請使用魔術命令 `%stop_session`。

 如果您在 AWS 主控台中離開筆記本，您會收到警告訊息，您可以選擇停止工作階段。

# 將 Amazon Q Developer 與 AWS Glue Studio 筆記本搭配使用
<a name="glue-studio-notebooks-amazon-q-developer"></a>

 AWS Glue Studio 允許您在基於 Jupyter 筆記本的筆記本介面中以互動方式編寫任務。使用 Amazon Q Developer 可改善 AWS Glue Studio 筆記本內的撰寫體驗。

 Amazon Q Developer 延伸模組可產生程式碼建議，建議與程式碼問題相關的改進，從而支援撰寫程式碼。Amazon Q Developer 同時支援 Python 和 Scala，這兩種語言可用來針對 AWS Glue Studio 筆記本中的 Spark 任務編寫 ETL 指令碼。

## 什麼是 Amazon Q Developer？
<a name="w2aac33c15c36b9"></a>

 Amazon Q Developer 是一項採用機器學習技術的服務，可協助提升開發人員的生產力。Amazon Q Developer 可根據開發人員使用自然語言的註解及其在 IDE 中的程式碼產生程式碼建議，進而協助提升開發人員的生產力。此服務與 JupyterLab、 Amazon SageMaker AI Studio、 Amazon SageMaker AI 筆記本執行個體和其他整合開發環境 (IDEs整合。

 如需詳細資訊，請參閱[將 Amazon Q Developer 與 AWS Glue Studio 搭配使用](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/glue-setup.html)。