

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

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

在本教學課程中，您將了解如何使用 AWS Glue Studio 建立串流任務。 AWS Glue Studio 是建立 AWS Glue 任務的視覺化界面。

您可以建立串流擷取、轉換和載入 (ETL) 任務，讓它連續執行，並使用來自 Amazon Kinesis Data Streams、Apache Kafka 和 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 等串流來源的資料。

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

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

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

**Topics**
+ [使用 Kinesis 資料產生器產生模擬資料](#streaming-tutorial-studio-kinesis-generate-data)
+ [使用 AWS Glue Studio 建立 AWS Glue 串流任務](#streaming-tutorial-studio-kinesis-create-job)
+ [執行轉換並將轉換的結果儲存在 Amazon S3](#streaming-tutorial-studio-kinesis-transformation)

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

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

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

   此範本會為您佈建 Kinesis 資料串流和 Kinesis 資料產生器帳戶。也會建立 Amazon S3 儲存貯體來保存資料，並建立具有本教學課程所需權限的 Glue 服務角色。

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-kinesis-create-job"></a>

1. 在相同區域的 主控台 AWS Glue 中導覽至 。

1. 在**資料整合和 ETL** 下的左側導覽列下，選取 **ETL 任務**。

1. **使用空白畫布透過視覺化**建立 AWS Glue 任務。  
![螢幕擷取畫面顯示建立任務對話方塊。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1a.png)

1. 導覽至**任務詳細資訊**索引標籤。

1. 針對 AWS Glue 任務名稱，輸入 `DemoStreamingJob`。

1. 對於 **IAM 角色**，請選取由 CloudFormation 範本佈建的角色 `glue-tutorial-role-${AWS::AccountId}`。

1. 對於**Glue 版本**，請選取 **Glue 3.0**。將其他所有選項保留為預設值。  
![螢幕擷取畫面顯示「任務詳細資料」索引標籤。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1b.png)

1. 導覽至**視覺化**索引標籤。

1. 按一下加號圖示。在搜尋列中，輸入 **Kinesis**。選取 **Amazon Kinesis** 資料來源。  
![螢幕擷取畫面顯示「新增節點」對話方塊。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1c.png)

1. 在**資料來源屬性 - Kinesis 串流**索引標籤下，為 **Amazon Kinesis 來源**選取**串流詳細資料**。

1. 為**資料串流位置**選取**串流位於我的帳戶**。

1. 選擇您正在使用的區域。

1. 選取 `GlueStreamTest-{AWS::AccountId}` 串流。

1. 將其他所有設定保留為預設值。  
![螢幕擷取畫面顯示「資料來源屬性」索引標籤。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1d.png)

1. 導覽至**資料預覽**索引標籤。

1. 按一下**開始資料預覽工作階段**，即可預覽 KDG 產生的模擬資料。選擇您先前為串流任務建立的 Glue AWS Glue 服務角色。

   預覽資料需要 30-60 秒才會顯示。如果顯示**沒有可顯示的資料**，請按一下齒輪圖示，然後將**要取樣的列數**變更為 `100`。

   您可以看到如下所示的範例資料：  
![螢幕擷取畫面顯示「資料預覽」索引標籤。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1e.png)

   您也可以在**輸出結構描述**索引標籤查看推斷的結構描述。  
![螢幕擷取畫面顯示「輸出結構描述」索引標籤。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1f.png)

### 執行轉換並將轉換的結果儲存在 Amazon S3
<a name="streaming-tutorial-studio-kinesis-transformation"></a>

1. 選取來源節點後，按一下左上角的加號圖示以新增**轉換**步驟。

1. 選取**變更結構描述**步驟。  
![螢幕擷取畫面顯示「新增節點」對話方塊。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1g.png)

1. 您可以在此步驟重新命名欄位，並轉換欄位的資料類型。將 `o2stats` 欄位重新命名為 `OxygenSaturation`，並將所有 `long` 資料類型轉換為 `int`。  
![螢幕擷取畫面顯示「轉換」索引標籤。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1h.png)

1. 按一下加號圖示以新增 **Amazon S3** 目標。在搜尋方塊中輸入 S3，然後選取 **Amazon S3 - 目標**轉換步驟。  
![螢幕擷取畫面顯示「新增節點」索引標籤。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1i.png)

1. 選取 **Parquet** 作為目標檔案格式。

1. 選取 **Snappy** 作為壓縮類型。

1. 輸入 CloudFormation 範本 `streaming-tutorial-s3-target-{AWS::AccountId}` 建立的 **S3 目標位置**。

1. 選取以便在**資料目錄建立資料表，並在後續執行時，更新結構描述和新增分割區**。

1. 輸入目標**資料庫**和**資料表**名稱，以儲存 Amazon S3 目標資料表的結構描述。  
![螢幕擷取畫面顯示 Amazon S3 目標的設定頁面。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1j.png)

1. 按一下**指令碼**索引標籤以查看產生的程式碼。

1. 按一下右上角的**儲存**以儲存 ETL 程式碼，然後按一下**執行**以啟動 AWS Glue 串流任務。

   您可以在**執行**索引標籤找到**執行狀態**。讓任務執行 3-5 分鐘，然後停止任務。  
![螢幕擷取畫面顯示「執行」索引標籤。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1k.png)

1. 驗證在 Amazon Athena 建立的新資料表。  
![螢幕擷取畫面顯示在 Amazon Athena 中的資料表。](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-tutorial-1l.png)