範例:偵測串流上的熱點 (熱點功能) - 亞馬遜 Kinesis SQL 應用程式資料分析開發人員指南

對於新專案,我們建議您使用適用於 Apache Flink Studio 的全新受管理服務,取代適用於應用程式的 Kinesis Data Analytics。SQLManaged Service for Apache Flink Studio 易於使用且具備進階分析功能,讓您在幾分鐘內建置複雜的串流處理應用程式。

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

範例:偵測串流上的熱點 (熱點功能)

Amazon Kinesis Data Analytics 提供的 HOTSPOTS 功能可以找出並傳回資料中相對密集區域的相關資訊。如需詳細資訊,請參閱 Amazon Managed Service for Apache Flink SQL 參考資料中的熱點

在本練習中撰寫應用程式碼,以便在應用程式的串流來源上尋找熱點。若要設定應用程式,請執行下列動作:

  1. 設定串流來源:設定 Kinesis 串流並寫入範例座標資料,如下所示:

    {"x": 7.921782426109737, "y": 8.746265312709893, "is_hot": "N"} {"x": 0.722248626528026, "y": 4.648868803193405, "is_hot": "Y"}

    此範例提供 Python 指令碼供您填入串流。xy 值是隨機產生的,有些記錄會叢集在某些位置。

    如果指令碼刻意生成數值做為熱點的一部分,則會提供 is_hot 欄位做為指標。這可協助您評估熱點偵測功能是否正常運作。

  2. 建立應用程式:接著使用 AWS Management Console 建立 Kinesis Data Analytics 應用程式。將串流來源對應至應用程式內串流 (SOURCE_SQL_STREAM_001),以設定應用程式輸入。當應用程式啟動時,Kinesis Data Analytics 會持續讀取串流來源,並將記錄插入應用程式內串流。

    在本練習中,針對應用程式使用下列程式碼:

    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( "x" DOUBLE, "y" DOUBLE, "is_hot" VARCHAR(4), HOTSPOTS_RESULT VARCHAR(10000) ); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT "x", "y", "is_hot", "HOTSPOTS_RESULT" FROM TABLE ( HOTSPOTS( CURSOR(SELECT STREAM "x", "y", "is_hot" FROM "SOURCE_SQL_STREAM_001"), 1000, 0.2, 17) );

    此程式碼會讀取 SOURCE_SQL_STREAM_001 中的資料列、分析找出顯著熱點,然後將產生的資料寫入另一個應用程式內串流 (DESTINATION_SQL_STREAM)。您可以使用幫浦將資料列插入應用程式內串流。如需更多詳細資訊,請參閱 應用程式內串流與幫浦

  3. 設定輸出:設定應用程式輸出,將資料從應用程式傳送至外部目的地,即另一個 Kinesis 資料串流。查看熱點分數,並判斷哪些分數表示出現了熱點(且需要收到提醒)。您可以使用 AWS Lambda 功能進一步處理熱點資訊和設定提醒。

  4. 驗證輸出:此範例包含一個 JavaScript 應用程式,可從輸出串流讀取資料並以圖形方式顯示,以便您即時檢視應用程式產生的熱點。

本練習會使用美國西部 (奧勒岡) (us-west-2) 來建立這些串流及應用程式。如果您使用任何其他區域,請更新相應程式碼。