

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

# 教學課程：使用 AWS Glue Studio 筆記本建置您的第一個串流工作負載
<a name="streaming-tutorial-studio-notebooks"></a>

在本教學課程中，您將探索如何利用 AWS Glue Studio 筆記本以互動方式建置和精簡 ETL 任務，以進行近乎即時的資料處理。無論您是初次接觸 AWS Glue 或想要增強技能，本指南都會逐步引導您完成程序，讓您能夠充分利用 AWS Glue 互動式工作階段筆記本的潛力。

透過 AWS Glue 串流，您可以建立持續執行的串流擷取、轉換和載入 (ETL) 任務，並從串流來源取用資料，例如 Amazon Kinesis Data Streams、Apache Kafka 和 Amazon Managed Streaming for Apache Kafka (Amazon MSK)。

## 先決條件
<a name="streaming-tutorial-studio-notebooks-prereqs"></a>

若要遵循本教學課程，您需要具有 AWS 主控台許可的使用者才能使用 AWS Glue Amazon Kinesis、Amazon S3、Amazon Athena、 AWS CloudFormation、 AWS Lambda 和 Amazon Cognito。

## 使用 Amazon Kinesis 的串流資料
<a name="streaming-tutorial-studio-notebooks-kinesis"></a>

**Topics**
+ [使用 Kinesis 資料產生器產生模擬資料](#streaming-tutorial-studio-notebooks-kinesis-generate-data)
+ [使用 AWS Glue Studio 建立 AWS Glue 串流任務](#streaming-tutorial-studio-notebooks-kinesis-create-job)
+ [清除](#streaming-tutorial-studio-notebooks-clean)
+ [結論](#streaming-tutorial-studio-notebooks-conclusion)

### 使用 Kinesis 資料產生器產生模擬資料
<a name="streaming-tutorial-studio-notebooks-kinesis-generate-data"></a>

**注意**  
如果您已經完成之前的 [教學課程：使用 AWS Glue Studio 建置您的第一個串流工作負載](streaming-tutorial-studio.md)，您的帳戶中便已安裝 Kinesis 資料產生器，您可以略過以下步驟 1-8，繼續前往 [使用 AWS Glue Studio 建立 AWS Glue 串流任務](#streaming-tutorial-studio-notebooks-kinesis-create-job) 一節。

您可以使用 Kinesis 資料產生器 (KDG) 以 JSON 格式合成產生範例資料。您可以在[工具文件](https://awslabs.github.io/amazon-kinesis-data-generator/web/help.html)中找到完整的說明和詳細資訊。

1. 若要開始使用，請按一下 [https://aws-data-analytics-workshops.s3.amazonaws.com/aws_glue/aws_glue_streaming/docs/glue-stream.yaml](https://aws-data-analytics-workshops.s3.amazonaws.com/aws_glue/aws_glue_streaming/docs/glue-stream.yaml) 在您的 AWS 環境上執行 AWS CloudFormation 範本。
**注意**  
您可能會遇到 CloudFormation 範本失敗，因為 AWS 您的帳戶中已存在一些資源，例如 Kinesis Data Generator 的 Amazon Cognito 使用者。這可能是因為您已經在其他教學課程或部落格中進行過設定。若要解決此問題，您可以嘗試在新 AWS 帳戶中使用範本進行新的開始，或探索不同的 AWS 區域。這些選項可讓您執行教學課程，而不會與現有資源發生衝突。

   此範本會為您佈建 Kinesis 資料串流和 Kinesis 資料產生器帳戶。

1. 輸入 KDG 將用於驗證的**使用者名稱**和**密碼**。記下使用者名稱和密碼以供進一步使用。

1. 選取**下一步**一直到最後一步。確認 IAM 資源的建立。檢查畫面頂端是否顯示任何錯誤，例如密碼不符合最低需求，然後部署範本。

1. 導覽至堆疊的**輸出**索引標籤。完成部署範本後，範本會顯示產生的屬性 **KinesisDataGeneratorUrl**。按一下該 URL。

1. 輸入您記下的**使用者名稱**和**密碼**。

1. 選取您所使用的區域，然後選取「Kinesis 串流」`GlueStreamTest-{AWS::AccountId}`

1. 輸入下列範本：

   ```
   {
       "ventilatorid": {{random.number(100)}},
       "eventtime": "{{date.now("YYYY-MM-DD HH:mm:ss")}}",
       "serialnumber": "{{random.uuid}}",
       "pressurecontrol": {{random.number(
           {
               "min":5,
               "max":30
           }
       )}},
       "o2stats": {{random.number(
           {
               "min":92,
               "max":98
           }
       )}},
       "minutevolume": {{random.number(
           {
               "min":5,
               "max":8
           }
       )}},
       "manufacturer": "{{random.arrayElement(
           ["3M", "GE","Vyaire", "Getinge"]
       )}}"
   }
   ```

   現在，您可以使用**測試範本**查看模擬資料，並使用**傳送資料**將模擬資料擷取至 Kinesis。

1. 按一下**傳送資料**，產生 5-10K 的記錄給 Kinesis。

### 使用 AWS Glue Studio 建立 AWS Glue 串流任務
<a name="streaming-tutorial-studio-notebooks-kinesis-create-job"></a>

AWS Glue Studio 是一種視覺化界面，可簡化設計、協調和監控資料整合管道的程序。它可讓使用者無須編寫大量的程式碼即可構建資料轉換管道。除了視覺化任務撰寫體驗之外， AWS Glue Studio 還包含由 AWS Glue 互動式工作階段支援的 Jupyter 筆記本，您將在本教學課程的其餘部分中使用。

#### 設定 AWS Glue 串流互動式工作階段任務
<a name="streaming-tutorial-studio-kinesis-create-job-interactive-sessions"></a>

1. 下載提供的[筆記本檔案](https://aws-data-analytics-workshops.s3.amazonaws.com/aws_glue/aws_glue_streaming/docs/glue_streaming_tutorial_notebook.ipynb)，並將其儲存到本機目錄

1. 開啟 AWS Glue 主控台，並在左側窗格中按一下**筆記本** > **Jupyter 筆記本** > **上傳和編輯現有的筆記本**。在上一個步驟上傳記事本，然後按一下**建立**。  
![螢幕擷取畫面顯示建立 Jupyter 筆記本任務。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-2a.png)

1. 為工作提供名稱、角色，然後選取預設 Spark 核心。然後按一下**啟動筆記本**。對於 **IAM 角色**，請選取由 CloudFormation 範本佈建的角色。您可以在 CloudFormation 的**輸出**索引標籤看到這個角色。  
![螢幕擷取畫面顯示筆記本設定對話方塊。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-2b.png)

此筆記本有繼續本教學課程的所有必要指示。您可以依筆記本中的指示執行，也可以按照本教學課程繼續進行任務開發。

#### 執行筆記本儲存格
<a name="streaming-tutorial-studio-kinesis-create-job-notebook-cells"></a>

1. (選用) 第一個程式碼儲存格，`%help` 列出了所有可用的筆記本魔術命令。您可以暫時先略過此儲存格，之後再隨時返回探索。

1. 從下一個程式碼區塊 `%streaming` 開始。此魔術將任務類型設定為串流，可讓您開發、偵錯和部署 AWS Glue 串流 ETL 任務。

1. 執行下一個儲存格以建立 AWS Glue 互動式工作階段。輸出儲存格有訊息可確認工作階段建立。  
![螢幕擷取畫面顯示啟動互動式工作階段。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-2c.png)

1. 下一個儲存格可定義變數。將值取代為適合您任務的值，然後執行儲存格。例如：  
![螢幕擷取畫面顯示在互動式工作階段定義變數。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-2d.png)

1. 由於資料已經串流至 Kinesis Data Streams，因此下一個儲存格會使用串流中的結果。執行下一個儲存格。因為沒有列印陳述式，此儲存格並沒有預期的輸出。

1. 在下列儲存格中，您可以取得範例集並列印其結構描述和實際資料來探索傳入串流。例如：  
![螢幕擷取畫面顯示在互動式工作階段取樣和列印傳入的記錄。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-2e.png)

1. 下一步，定義實際資料轉換邏輯。此儲存格包含每個微批次中觸發的 `processBatch` 方法。執行儲存格。在高階程序中，我們對輸入串流執行以下操作：

   1. 選取輸入欄子集。

   1. 重新命名欄位 (將 o2stats 改為 oxygen\_stats)。

   1. 衍生新欄位 (serial\_identifier、ingest\_year、ingest\_month 和 ingest\_da)。

   1. 將結果存放在 Amazon S3 儲存貯體中，並建立分割的 AWS Glue 目錄資料表

1. 在最後一個儲存格中，每 10 秒觸發一次處理批次。執行儲存格並等待約 30 秒，讓它填入 Amazon S3 儲存貯體和 AWS Glue 目錄資料表。

1. 最後，使用 Amazon Athena 查詢編輯器瀏覽儲存的資料。您可以看到重新命名的欄位和新的分割區。  
![螢幕擷取畫面顯示在 Amazon Athena 查詢編輯器中瀏覽儲存的資料。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-2f.png)

此筆記本有繼續本教學課程的所有必要指示。您可以依筆記本中的指示執行，也可以按照本教學課程繼續進行任務開發。

#### 儲存並執行 AWS Glue 任務
<a name="streaming-tutorial-studio-kinesis-create-job-save"></a>

使用互動式工作階段筆記本完成應用程式的開發與測試後，按一下筆記本介面頂端的**儲存**。儲存後，您還可以將應用程式作為任務執行。

![螢幕擷取畫面顯示將筆記本儲存為 AWS Glue 任務。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-2g.png)


### 清除
<a name="streaming-tutorial-studio-notebooks-clean"></a>

為避免對您的帳戶產生額外費用，請停止您依指示啟動的串流任務。您可以停止筆記本來結束工作階段，便可停止串流任務。清空 Amazon S3 儲存貯體，並刪除您先前佈建的 AWS CloudFormation 堆疊。

### 結論
<a name="streaming-tutorial-studio-notebooks-conclusion"></a>

在本教學課程中，我們示範如何使用 AWS Glue Studio 筆記本執行下列操作
+ 使用筆記本撰寫串流 ETL 任務
+ 預覽傳入資料串流
+ 無需發佈 AWS Glue 任務即可編碼和修正問題
+ 查看端對端可行程式碼，移除任何偵錯，並從筆記本列印陳述式或儲存格
+ 將程式碼發佈為 AWS Glue 任務

本教學課程的目標是為您提供使用 AWS Glue 串流和互動式工作階段的實作體驗。建議您將此做為個別 AWS Glue 串流使用案例的參考。如需詳細資訊，請參閱[AWS Glue 互動式工作階段入門](interactive-sessions.md)。