Amazon Kinesis Data Analytics for SQL 應用程式:運作方式 - 亞馬遜 Kinesis SQL 應用程式資料分析開發人員指南

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

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

Amazon Kinesis Data Analytics for SQL 應用程式:運作方式

注意

2023 年 9 月 12 日之後,如果尚未使用 Kinesis Data Analytics for SQL,您將無法使用 Kinesis Data Firehose 做為建立新應用程式的來源。如需詳細資訊,請參閱限制

應用程式是 Amazon Kinesis Data Analytics 中的主要資源,您可以在帳戶中建立。您可以使用 AWS Management Console 或 Kinesis Data Analytics API 建立和管理應用程式。Kinesis Data Analytics 提供 API 操作來管理應用程式。如需 API 操作的清單,請參閱 動作

Kinesis Data Analytics 應用程式會持續即時讀取和處理串流資料。您可以使用 SQL 撰寫應用程式程式碼,以處理傳入的串流資料並產生輸出。然後,Kinesis Data Analytics 會將輸出寫入設定的目的地。下圖說明典型的應用程式架構。

顯示資料分析應用程式、串流輸入來源、參考資料和應用程式輸出的圖表。

每個應用程式都有名稱、描述、版本 ID 和狀態。Amazon Kinesis Data Analytics 會在您第一次建立應用程式時指派一個版本 ID。此版本 ID 會在您更新任何應用程式組態時更新。舉例來說,如果您新增輸入組態、新增或刪除參考資料來源、新增或刪除輸出組態,或更新應用程式碼,Kinesis Data Analytics 會更新目前的應用程式版本 ID。Kinesis Data Analytics 也會維護應用程式建立和上次更新的時間戳記。

除了這些基本屬性之外,每個應用程式還包含以下內容:

  • 輸入:應用程式的串流來源。您可以選取 Kinesis 資料串流或 Firehose 資料傳遞串流作為串流來源。在此輸入組態中,將串流來源映射到應用程式內輸入串流。應用程式內串流就像是持續更新的資料表,您可以在其上執行 SELECTINSERT SQL 作業。在應用程式碼中,您可以建立其他應用程式內串流來儲存中繼查詢結果。

     

    在多個應用程式內輸入串流中,您可以選擇性地分割單一串流來源,以改善輸送量。如需詳細資訊,請參閱 限制設定應用程式輸入

     

    在每個應用程式串流中,Amazon Kinesis Data Analytics 會提供名為 時間戳記和 ROWTIME 欄 的時間戳記欄。您可以在基於時間的窗口查詢中使用此欄。如需詳細資訊,請參閱 窗口化查詢

     

    您可以選擇性地設定參考資料來源,以豐富應用程式內的輸入資料串流。此舉會產生應用程式內參考資料表。您必須將參考資料作為物件存放在 S3 儲存貯體中。Amazon Kinesis Data Analytics 會在應用程式啟動時讀取 Amazon S3 物件,並建立應用程式內資料表。如需詳細資訊,請參閱 設定應用程式輸入

     

  • 應用程式碼:處理輸入並產生輸出的一系列 SQL 陳述式。您可以針對應用程式內串流和參考資料表撰寫 SQL 陳述式。您也可以撰寫 JOIN 查詢,以合併來自這兩個來源的資料。

     

    如需 Kinesis Data Analytics 支援之 SQL 語言元素的相關資訊,請參閱 Amazon Kinesis Data Analytics SQL 參考資料

     

    以最簡單的形式來說,應用程式碼可以是單一 SQL 陳述式,可從串流輸入中選取,並將結果插入串流輸出。它也可以是一系列的 SQL 陳述式,其中一個的輸出會饋送至下一個 SQL 陳述式的輸入。此外,您可以撰寫應用程式碼,將輸入串流分割成多個串流。然後,您可以套用其他查詢來處理這些串流。如需詳細資訊,請參閱 應用程式碼

     

  • 輸出:在應用程式碼中,查詢結果會移至應用程式內串流。在應用程式碼中,您可以建立一或多個應用程式內串流來儲存中繼結果。然後,您可以選擇性地設定應用程式輸出,將資料保留在應用程式內串流,該串流會將應用程式的輸出 (也稱為應用程式內輸出串流) 保存在外部目的地。外部目標可以是 Firehose 傳送串流或 Kinesis 資料串流。請注意下列與這些目的地相關的資訊:

    • 您可以設定 Firehose 交付串流,將結果寫入 Amazon S3、Amazon Redshift 或 Amazon OpenSearch 服務 (服OpenSearch 務)。

       

    • 您也可以將應用程式輸出寫入自訂目的地,而不是 Amazon S3 或 Amazon Redshift。若要這樣做,您要在輸出組態中指定 Kinesis 資料串流作為目的地。然後,您可 AWS Lambda 以設定輪詢串流並叫用 Lambda 函數。Lambda 函數程式碼會接收串流資料作為輸入。在 Lambda 函數程式碼中,您可以將傳入資料寫入自訂目的地。如需詳細資訊,請參閱 AWS Lambda 搭配 Amazon Kinesis Data Analytics 使用。

    如需詳細資訊,請參閱 設定應用程式輸出

此外,請注意下列事項:

  • Amazon Kinesis Data Analytics 需要許可才能讀取串流來源的記錄,並將應用程式輸出寫入外部目的地。您可以透過 IAM 角色來授予這些許可。

     

  • Amazon Kinesis Data Analytics 會為每個應用程式提供應用程式內錯誤串流。如果您的應用程式在處理特定記錄時發生問題 (例如,因為類型不符或延遲到達),則該記錄會寫入錯誤串流。您可以設定應用程式輸出來引導 Kinesis Data Analytics,將錯誤串流資料保留到外部目的地,以供進一步評估。如需詳細資訊,請參閱 錯誤處理

     

  • Amazon Kinesis Data Analytics 可確保應用程式輸出記錄有寫入設定的目的地。即使您遇到應用程式中斷,它也會使用「至少一次」處理和交付模式。如需更多詳細資訊,請參閱 將應用程式輸出保存至外部目標的交付模型