一般問題

問:什麼是 Amazon Kinesis Data Analytics?
Amazon Kinesis Data Analytics 是使用 Apache Flink 即時轉換和分析串流資料的最簡單方法。Apache Flink 是處理資料串流的開放原始碼框架及引擎。Amazon Kinesis Data Analytics 可簡化建構、管理及整合 Apache Flink 應用程式與其他 AWS 服務的複雜程序。

Amazon Kinesis Data Analytics 會處理持續執行串流應用程式所需的所有事項,並依傳入的資料量及輸送率自動擴展。使用 Amazon Kinesis Data Analytics,無須管理伺服器,沒有最低費用或設定成本,而只需為串流應用程式耗用的資源付費。
 
問:什麼是即時串流處理?為什麼我需要它?
因即時資料來源爆炸性成長,企業導入資料的速度也隨之加快。無論是要處理來自行動和 Web 應用程式的日誌資料、電子商務平台的購買資料,或是 IoT 裝置的感應器資料,即時導入資料都能讓您了解目前顧客、組織及業務的狀況。
 
問:Kinesis Data Analytics 可以用來做什麼?
在很多用途上,您都可以使用 Kinesis Data Analytics 來持續處理資料並在幾秒或幾分鐘內取得洞見,不再需要等待數天或數個月。Kinesis Data Analytics 能讓您快速建置端對端的串流處理應用程式,以處理日誌分析、點擊流分析、物聯網 (IoT)、廣告技術、遊戲等等。最常見的四種用途是:串流擷取轉換載入 (ETL)、持續指標產生、回應式即時分析,和互動式資料串流查詢。
 
串流 ETL
串流 ETL 應用程式可讓您先整理、豐富化、組織及轉換原始資料,再即時載入資料湖或資料倉儲,藉此減少或免除執行批次 ETL 步驟。這些應用程式可以將小記錄先緩衝到較大型的檔案再進行傳送,並且可以跨串流和資料表執行精密的聯結。例如,您可以建立一個應用程式來持續讀取存放在 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 的 IoT 感應器資料、接著按照感應器類型將資料歸類,移除重複資料,根據指定的結構描述將資料正常化,然後將資料送交付到 Amazon S3。
 
持續指標產生
持續指標產生應用程式可讓您監控和了解您的資料在一段時間內的趨勢。您的應用程式可以將串流資料彙總到關鍵資訊中,接著將其與報告資料庫和監控服務無縫整合,來即時服務您的應用程式和使用者。透過 Kinesis Data Analytics,您可以使用 SQL 或 Apache Flink 程式碼在特定時段內持續產生時間序列分析。舉例來說,您可以每分鐘計算出最高分玩家,然後將資料傳送到 Amazon DynamoDB,為行動遊戲建立一個即時排行榜。或者,可以每五分鐘計算出您網站的不重複訪客數,然後將處理的結果傳送到 Amazon Redshift,以追蹤網站的流量。
 
回應式即時分析
回應式即時分析應用程式會在特定指標達到預定的閾值時,傳送即時警示或通知,或者在更進階的用途中,當您的應用程式使用機器學習演算法偵測到異常時,傳送即時警示或通知。這類應用程式能讓您馬上即時回應業務變更,像是預測行動應用程式的用戶棄用率,以及識別效能降級的系統等。例如,應用程式可以運算客戶端 API 在一段時間後的可用性或成功率,然後將結果傳送到 Amazon CloudWatch。您可以建置另一個應用程式尋找滿足特定條件的事件,然後使用 Amazon Kinesis Data Streams 和 Amazon Simple Notification Service (SNS) 自動通知相關客戶。
 
資料串流的互動式分析
利用互動式分析,能即時探索串流資料。使用臨機查詢或程式,可檢查出自 Amazon MSK 或 Amazon Kinesis Data Streams 的串流,將這些串流之內的資料情形加以視覺化。例如,可檢視計算窗期平均的即時指標所表現的行為,並將彙總資料傳送至自選的目的地。互動式分析也有助於串流處理應用程式的反覆開發。您所建置的查詢能隨新資料到來而持續更新。使用 Amazon Kinesis Data Analytics Studio,可將這些查詢部署為啟用自動擴展和耐久狀態備份之下持續地執行。
 
問:如何開始將 Apache Flink 應用程式使用於 Kinesis Data Analytics?
登入 Amazon Kinesis Data Analytics 主控台並建立新的串流處理應用程式。您也可以使用 AWS CLIAWS 開發套件。建立應用程式後,前往您慣用的整合開發環境,連接到 AWS,然後以您選擇的語言安裝開放原始碼 Apache Flink 程式庫和 AWS 開發套件。Apache Flink 是處理資料串流和 AWS 開發套件的開放原始碼框架及引擎。可擴展的程式庫包括超過 25 個預先建立的串流處理運算子 (如視窗和彙總),以及 AWS 服務整合 (如 Amazon MSK、Amazon Kinesis Data Streams 和 Amazon Kinesis Data Firehose)。完成建立後,請將您的程式碼上傳到 Amazon Kinesis Data Analytics,該服務便會處理持續執行即時應用程式所需的所有事項,其中包括依傳入的資料量及輸送量自動擴展。
 
問:如何開始使用 Amazon Kinesis Data Analytics Studio?
可從 Amazon Kinesis Data Analytics 主控台建立新的 Studio 筆記本著手。一啟動筆記本,就能在 Apache Zeppelin 中開啟,立即以 SQL、Python 或 Scala 撰寫程式碼。您可利用內建整合和在使用自訂連接器之下利用各種其他來源,從 Amazon Kinesis Data Streams、Amazon MSK 及 Amazon S3 的筆記本介面以互動方式開發應用程式。可在 Flink SQL 和 Table API 中使用 Apache Flink 支援的所有運算子,執行資料串流的臨機查詢,及開發串流處理應用程式。一旦您準備好,只需幾個點按動作,就能輕鬆將程式碼提升為持續執行的串流處理應用程式,並處於自動擴展且耐久的狀態。
 
問:如何開始將 Apache Beam 應用程式使用於 Kinesis Data Analytics?
使用 Apache Beam 建立您的 Kinesis Data Analytics 應用程式與開始使用 Apache Flink 非常相似。請遵循以上問題中的指示,確定依照開發人員指南中的指示安裝了在 Apache Beam 上執行應用程式所需的任何元件。請注意,僅當在 Apache Beam 上執行時,Kinesis Data Analytics 才支援 Java 開發套件。
 
問:如何開始使用 Kinesis Data Analytics for SQL?
登入 Amazon Kinesis Data Analytics 主控台並建立新的串流處理應用程式。您也可以使用 AWS CLIAWS 開發套件。您可以透過三個簡單的步驟建置一個端對端應用程式:1) 設定傳入串流資料、2) 編寫您的 SQL 查詢,以及 3) 指向要載入結果的位置。Kinesis Data Analytics 可辨識 JSON、CSV 和 TSV 等標準資料格式,並自動建立一個基礎結構描述。您可以優化這個結構描述,或者,如果您的資料是非結構化資料,可使用我們的直覺式結構描述編輯器來定義一個新的結構描述。接著,服務會將結構描述套用到輸入串流,讓它看起來像是持續更新的 SQL 表,如此您即可針對它編寫標準 SQL 查詢。您可使用我們的 SQL 編輯器來建置查詢。
 
SQL 編輯器隨附很多附加功能,包括對即時資料的語法檢查和測試。我們也為您提供範本,其中包含從簡單的串流篩選條件到進階異常偵測和 top-K 分析的 SQL 程式碼。Kinesis Data Analytics 會處理所有基礎設施的佈建和彈性地擴展以處理任何資料輸送量。您不需要規劃、佈建或管理基礎設施。
 
問:Kinesis Data Analytics 有哪些限制?
在大部分情況下,Kinesis Data Analytics 會彈性地擴展您的應用程式,以應付來源串流的資料輸送量和查詢複雜性。如需服務限制的詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL 開發人員指南中的 限制一節。 如需用於 Apache Flink 應用程式之服務 限制的詳細資訊,請參閱 Amazon Kinesis Data Analytics for Apache Flink 開發人員指南中的「限制」一節。
 
問:Amazon Kinesis Data Analytics 是否支援結構描述註冊?
是。透過 Apache Flink DataStream 連接器,Amazon Kinesis Data Analytics for Apache Flink 應用程式可以使用 AWS Glue 結構描述登錄檔 (AWS Glue 的無伺服器功能)。您可以將 Apache Kafka/Amazon MSK 和 Amazon Kinesis Data Streams 作為匯點或來源與 Amazon Kinesis Data Analytics for Apache Flink 工作負載整合。請參閱結構描述登錄檔 使用者文件,以開始使用和進一步了解。

主要概念

問:什麼是 Kinesis Data Analytics 應用程式?
應用程式是您所使用的 Kinesis Data Analytics 實體。Kinesis Data Analytics 應用程式可持續即時讀取和處理串流資料。您可以使用 Apache Flink 支援的語言撰寫應用程式程式碼,來處理傳入的串流資料並產生輸出。接著,Kinesis Data Analytics 會將輸出寫入設定的目標。
 
每個應用程式都由三個主要元件組成:
 
輸入 – 應用程式的串流來源。在輸入設定中,您將串流來源對應到應用程式內資料串流。資料會從您的資料來源流到應用程式內資料串流。可將您的應用程式程式碼用來處理來自這些應用程式內資料串流的資料,然後將經過處理的資料傳送到後續的應用程式內資料串流或目標。 對於 Apache Flink 應用程式和 Studio 筆記本,請將輸入加到應用程式的程式碼內,若是 Kinesis Data Analytics for SQL 應用程式,請透過 API 來進行。 
 
應用程式的程式碼 – 用來處理輸入並產生輸出的一系列 Apache Flink 運算子或 SQL 陳述式。最簡單來說,應用程式的程式碼可以是單一 Apache Flink 運算子或 SQL 陳述式,它會讀取與串流來源關聯的應用程式內資料串流,然後寫入與輸出關聯的應用程式內資料串流。對於 Studio 筆記本,可以是簡單的 Flink SQL 選擇查詢,結果顯示在筆記本內的上下文中。您可以用 Apache Flink 支援的語言為 Kinesis Data Analytics for Apache Flink 應用程式或 Studio 筆記本撰寫 Apache Flink 程式碼,或撰寫 SQL 程式碼將初步應用程式內資料串流分割成多個串流,然後將額外的邏輯套用至 Kinesis Data Analytics for SQL 應用程式的這些隔開的串流。 
 
輸出 – 您可以建立一或多個應用程式內串流來保存中繼結果。您之後可以選擇性地設定應用程式輸出,將特定應用程式內串流中的資料保留到外部目標。對於 Apache Flink 應用程式和 Studio 筆記本,以及 Kinesis Data Analytics for SQL 應用程式,請將輸出加到應用程式的程式碼內。 
 
問:什麼是應用程式內資料串流?
應用程式內資料串流是持續將資料存放到您應用程式的實體,讓您可以執行處理。您的應用程式會持續寫入並讀取應用程式內資料串流。對於 Apache Flink 和 Studio 應用程式,您會透過串流運算子來處理資料,藉此與應用程式內串流進行互動。運算子會將一或多個資料串流轉換成新的資料串流。至於 SQL 應用程式,您與應用程式內串流互動的方式就跟使用 SQL 陳述式與 SQL 資料表互動的方式一樣。您會將 SQL 陳述式套用於一或多個資料串流,然後將結果插入新的資料串流。
 
問:支援哪種應用程式程式碼?
Kinesis Data Analytics 支援使用 Java、Scala 和 Python,搭配開放原始碼 Apache Flink 程式庫和您自己的自訂程式碼建置的應用程式。此外,Kinesis Data Analytics 還支援使用 Java 和開放原始碼 Apache Beam 程式庫,以及您自己的客戶程式碼建置的應用程式。 Kinesis Data Analytics Studio 可支援使用 Apache Flink 相容 SQL、Python 及 Scala 所建置的程式碼。

管理應用程式

問:如何監控 Kinesis Data Analytics 應用程式的操作和效能?
AWS 提供多各用於監控 Kinesis Data Analytics 應用程式的工具,包括存取 Apache Flink 應用程式的 Flink 儀表板。您可以設定其中一些工具來為您進行監控。如需進一步了解如何監控您的應用程式,請參閱:
 
問:如何管理和控制對 Kinesis Data Analytics 應用程式的存取權限?
Kinesis Data Analytics 需要許可才可從應用程式指定的串流資料來源讀取記錄。Kinesis Data Analytics 還需要許可,才能將應用程式輸出寫入應用程式輸出組態中指定的目標。建立 Kinesis Data Analytics 可以擔任的 IAM 角色即可授予這些許可。您授予此角色的許可決定了當服務擔任角色時 Kinesis Data Analytics 可以執行的動作。如需詳細資訊,請參閱:
  • Amazon Kinesis Data Analytics for Apache Flink 開發人員指南中的授予權限一節。
  • Amazon Kinesis Data Analytics Studio 開發人員指南中的授予權限一節。
  • Amazon Kinesis Data Analytics for SQL 開發人員指南中的授予權限一節。
 
問:Kinesis Data Analytics 如何擴展我的應用程式?
在大部分情況下,Kinesis Data Analytics 會彈性地擴展您的應用程式以應付來源串流的資料輸送量和查詢複雜性。Kinesis Data Analytics 以 Amazon Kinesis 處理單元 (KPU) 的形式佈建容量。一個 KPU 可提供 1 個 vCPU 和 4GB 記憶體。
 
對於 Apache Flink 應用程式和 Studio 筆記本,Kinesis Data Analytics 會為每個 KPU 指派 50GB 的執行中應用程式儲存體,供您的應用程式使用於檢查點,您也可以透過暫存磁碟來使用。檢查點是執行中應用程式的最新備份,可用來立即復原損毀的應用程式。您也可以在 API 中使用 Parallelism 和 ParallelismPerKPU 參數,控制 Kinesis Data Analytics 平行執行 Apache Flink 應用程式工作 (例如讀取來源或執行運算子)。平行度用於定義工作的平行執行個體數目。所有運算子、來源和匯點都會搭配定義的平行度 (預設為 1) 來執行。每個 KPU 的平行度則定義您應用程式每個 Kinesis 處理單元 (KPU) 的平行工作的數量,預設為 1。如需詳細資訊,請參閱 Amazon Kinesis Data Analytics for Apache Flink 開發人員指南中的 擴展一節。
 
對於 SQL 應用程式,每個串流來源會對映到一個對應的應用程式內串流。雖然對許多客戶來說這不是必要的,但是指定輸入平行度參數來提高來源對應的應用程式內串流數目,可以更有效率的使用 KPU。Kinesis Data Analytics 會將串流資料來源的分區 (如 Amazon Kinesis 資料串流的碎片) 平均指派到您指定的應用程式內資料串流數目。舉例來說,如果您使用一個包含 10 個碎片的 Amazon Kinesis 資料串流做為串流資料來源,且您將輸入平行度指定為 2,則 Kinesis Data Analytics 會個別指派五個 Amazon Kinesis 碎片到兩個名為 "SOURCE_SQL_STREAM_001" 和 "SOURCE_SQL_STREAM_002" 的應用程式內串流。如需詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL 開發人員指南中的 設定應用程式輸入一節。
 
問:建立和管理 Kinesis Data Analytics 應用程式的相關最佳實務為何?
如需有關 Apache Flink 最佳實務的資訊,請參閱 Amazon Kinesis Data Analytics for Apache Flink 開發人員指南中的 最佳實務一節。本節將涵蓋有關容錯能力、效能、日誌、編碼等的最佳實務。
 
如需有關 Amazon Kinesis Data Analytics Studio 最佳實務的資訊,請參閱 Amazon Kinesis Data Analytics Studio 開發人員指南中的「最佳實務」一節。本節涵蓋 SQL、Python 及 Scala 應用程式;將程式碼部署為持續執行之串流處理應用程式的要求;效能、記錄等的最佳實務與範例。 
 
如需有關 SQL 最佳實務的資訊,請參閱 Amazon Kinesis Data Analytics for SQL 開發人員指南中的 最佳實務一節。本節將介紹如何管理應用程式、定義輸入結構描述、連接到輸出,以及撰寫應用程式程式碼。
 
問:我可以使用 Kinesis Data Analytics Apache Flink 應用程式存取 Amazon VPC 後方的資源嗎?
是。您可以存取 Amazon VPC 後方的資源。如需了解如何設定您的應用程式以進行 VPC 存取,請參閱 Amazon Kinesis Data Analytics 開發人員指南中的 使用 Amazon VPC 一節。
 
問:單一 Kinesis Data Analytics Apache Flink 應用程式可以存取多個 VPC 嗎?
不可以。如果指定多個子網路,這些子網路必須位於同一個 VPC 中。您可以讓多個 VPC 建立對等關係以連接到其他 VPC。
 
問:連接至 VPC 的 Kinesis Data Analytics for Apache Flink 應用程式也能存取網際網路和 AWS 服務端點嗎?
Kinesis Data Analytics for Apache Flink 應用程式與 Kinesis Data Analytics Studio 筆記本若設定要存取特定 VPC 中的資源,預設無法存取網際網路。如需了解如何為您的應用程式設定網際網路的存取,請參閱 Amazon Kinesis Data Analytics 開發人員指南中的 網際網路和服務存取一節。 

定價和帳單

問:Kinesis Data Analytics 的費用是多少?
使用 Amazon Kinesis Data Analytics,您只需按實際用量付費。使用 Amazon Kinesis Data Analytics 不需要佈建資源,也不用預付費用。
 
我們會根據您執行串流處理應用程式所使用的 Amazon Kinesis 處理單元 (或 KPU) 數量,按時收費。單一 KPU 是由 1 個 vCPU 運算和 4 GB 記憶體組成的一個串流處理容量單位。根據處理複雜性和已處理的串流資料傳輸量而定,記憶體和運算的需求會有所不同,因此 Amazon Kinesis Data Analytics 會自動擴展您的串流處理程式所需的 KPU 數目。
 
在 Apache Flink 和 Apache Beam 應用程式方面,您需為每個應用程式支付額外一個 KPU 的應用程式協調費用。此外,也會針對 Apache Flink 和 Apache Beam 應用程式收取執行中應用程式儲存空間和耐久應用程式備份的費用。執行中應用程式儲存體用來在 Amazon Kinesis Data Analytics 提供狀態處理能力,並按每月每 GB 收費。耐久應用程式備份為選擇性功能並按每月每 GB 收費,為應用程式提供時間點的恢復功能。
 
對於 Amazon Kinesis Data Analytics Studio,在開發或互動模式下,會向您多計收一個 KPU 作為應用程式協調,另一個供互動開發使用。另外也會為執行中應用程式儲存體向您收費。不會因為耐久應用程式備份向您收費。
 
如需定價的詳細資訊,請參閱 Amazon Kinesis Data Analytics 定價頁面
 
問:AWS 免費方案是否提供 Kinesis Data Analytics?
否。AWS 免費方案目前不包括 Kinesis Data Analytics。AWS 免費方案是提供一組 AWS 服務免費試用的計劃。
 
問:使用執行中但未處理任何來源資料的 Kinesis Data Analytics 應用程式是否需要付費?
對於 Apache Flink 和 Apache Beam 應用程式,如果您的 Kinesis Data Analytics 應用程式正在執行,則會收取兩個 KPU 和 50 GB 執行中應用程式儲存體的最低費用。 
 
對於 Kinesis Data Analytics Studio 筆記本,如果您的應用程式正在執行,則會收取三個 KPU 和 50 GB 執行中應用程式儲存體的最低費用。
 
對於 SQL 應用程式,如果您的 Kinesis Data Analytics 應用程式正在執行,只會向您收取一個 KPU 的最低費用。
 
問:除了 Kinesis Data Analytics 費用以外,還會產生任何其他費用嗎?
Kinesis Data Analytics 是全代管的串流處理解決方案,與讀取資料的串流來源及寫入處理資料的目標沒有關係。我們會根據您在應用程式中讀取和寫入的服務分開收費。
問:什麼是 Apache Flink?
Apache Flink 是用於串流和批次資料處理的開放原始碼架構和引擎。它讓串流應用程式的建構變得輕鬆,因為它提供強大的運算子,並且可以妥善解決重複處理之類的核心串流問題。Apache Flink 透過資料串流,為分散式運算提供資料分散、通訊及容錯等能力。
 
問:如何開發應用程式?
您可以從下載包括 AWS SDK、Apache Flink 和 AWS 服務適用容器的開放原始碼程式庫開始。如需如何下載程式庫並建立您的第一個應用程式的操作說明,您可以參閱 Amazon Kinesis Data Analytics for Apache Flink 開發人員指南
 
問:應用程式的程式碼看起來是什麼樣子?
您可以使用資料串流和串流運算子撰寫 Apache Flink 程式碼。應用程式資料串流是您使用程式碼執行處理所依據的資料結構。由來源傳出的資料會持續流入應用程式資料串流。一或多個串流運算子會用來定義您的應用程式資料串流處理,包括 transform、partition、aggregate、join 和 window 等函數。資料串流和運算子可以採用串流鏈或平行鏈的方式結合使用。使用虛擬程式碼的一個簡短範例如下所示。
DataStream <GameEvent> rawEvents = env.addSource(
	New KinesisStreamSource(“input_events”));
DataStream <UserPerLevel> gameStream =
	rawEvents.map(event - > new UserPerLevel(event.gameMetadata.gameId, 
			event.gameMetadata.levelId,event.userId));
gameStream.keyBy(event -> event.gameId)
            .keyBy(1)
            .window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
            .apply(...) - > {...};
gameStream.addSink(new KinesisStreamSink("myGameStateStream"));
問:如何使用運算子?
運算子會取用應用程式資料做為輸入,然後將處理過的資料傳送到應用程式資料串流做為輸出。您可以結合使用運算子,然後透過多個步驟建構應用程式,無需具備分散式系統的進階知識,即可實作和操作。
 
問:支援的運算子有哪些?
Kinesis Data Analytics for Apache Flink 包含取自 Apache Flink 超過 25 個運算子,您可以使用這些運算子解決廣泛的使用案例問題,包括 Map、KeyBy、Aggregations、Window Join 和 Window。Map 可讓您執行任意處理,從傳入資料串流中取出一個元素,然後產生另一個元素。從邏輯上說,KeyBy 使用指定索引鍵來組織資料,讓您可以將類似資料點一起處理。Aggregations 會在多個索引鍵之間執行處理,如 sum、min 和 max。Window Join 會在指定索引鍵和視窗上將兩個資料串流聯結在一起。Window 使用索引鍵將資料分組,通常是時基操作,如計算 5 分鐘時間區段內的不重複項目數。
 
如果上述運算子不符合您的需求,您可以自行建立自訂運算子。關於更多範例,您可以參閱 Amazon Kinesis Data Analytics for Apache Flink 開發人員指南中的「運算子」部分。如需完整的 Apache Flink 運算子清單,請參閱 Apache Flink 文件的 運算子部分。
 
問:Kinesis Data Analytics for Apache Flink 應用程式支援哪些整合?
您可以使用最少的程式碼來設定預先建立的整合,或建立自己的整合以連接至幾乎任何的資料來源。這個以 Apache Flink 為基礎的開放原始碼程式庫支援串流來源和目標 (即所謂的匯點),來傳送處理資料。此外,也支援透過非同步輸入/輸出連接器執行資料豐富化。在開放原始碼程式庫中的特定連接器清單,如下所示。
  • 串流資料來源:Amazon Managed Streaming for Apache Kafka (Amazon MSK)、Amazon Kinesis Data Streams
  • 目標或匯點:Amazon Kinesis Data Streams、Amazon Kinesis Data Firehose、Amazon DynamoDB、Amazon Elasticsearch Service 和 Amazon S3 (透過檔案匯點整合)

Apache Flink 也包括其他 連接器,如 Apache Kafka、Apache Casssandra、Elasticsearch 及其他等。
 
問:Kinesis Data Analytics for Apache Flink 應用程式是否可以跨串流及/或主題複寫資料?
是。您可以使用 Kinesis Data Analytics Apache Flink 應用程式,在 Amazon Kinesis Data Streams、Amazon MSK 和 其他系統之間複寫資料。我們的文件中提供的 範例示範了如何從一個 Amazon MSK 主題讀取及寫入另一個主題。
 
問:是否支援自訂整合?
您可以將來源或目標新增到您的應用程式,方法如下:以一組原始型別為建立基礎,這些原始型別必須可讓您讀取和寫入檔案、目錄、通訊端或是您可以透過網際網路存取的任何內容。Apache Flink 提供適用於 資料來源資料匯點的原始型別。這些原始型別包含不同的設定,例如,能透過一次作業、非同步或同步方式持續讀取並寫入資料,以及其他設定等。舉例來說,您可以藉由延伸現有的檔案來源整合,設定應用程式持續讀取 Amazon S3。
 
問:Kinesis Data Analytics for Apache Flink 應用程式提供哪種交付模型?
如果應用程式是使用冪等運算子 (包括來源和匯點) 建立的,則 Kinesis Data Analytics Apache Flink 應用程式會使用「恰好一次」的交付模型。也就是說,處理過的資料影響下游結果恰好一次。檢查點會儲存目前的應用程式狀態,並讓 Kinesis Data Analytics for Apache Flink Applications 還原應用程式的位置,以提供與無失效相同的語義。用於 Apache Flink 應用程式的檢查點會透過 Apache Flink 的 檢查點功能提供。根據預設,Kinesis Data Analytics for Apache Flink 應用程式會使用 Apache Flink 的「恰好一次」語義。如果您設計應用程式時,使用利用 Apache Flink「恰好一次」語義的來源、運算子和匯點,則您的應用程式將支援恰好處理一次的語義。
 
問:是否可以從我的應用程式儲存空間存取本機儲存空間?
是。Kinesis Data Analytics for Apache Flink Applications 會為您應用程式的每個 Kinesis 處理單元 (KPU) 提供 50 GB 的執行中應用程式儲存空間。Kinesis Data Analytics 會與您的應用程式一起擴展儲存空間。使用檢查點儲存應用程式狀態時,會使用執行中應用程式儲存空間。此外,您的應用程式程式碼也可以存取此儲存空間,將它當成臨時磁碟來使用於快取資料或任何其他用途。Kinesis Data Analytics 可隨時從執行中應用程式儲存空間,將未透過檢查點儲存的資料移除 (例如運算子、來源、匯點)。所有儲存在執行中應用程式儲存空間的資料都會採用靜態加密來保護。
 
問:Kinesis Data Analytics for Apache Flink 如何自動備份我的應用程式?
Kinesis Data Analytics 會使用檢查點和快照,自動備份您的執行中應用程式的狀態。檢查點會儲存目前的應用程式狀態,並讓 Kinesis Data Analytics for Apache Flink Applications 還原應用程式的位置,以提供與無失效相同的語義。檢查點會使用執行中應用程式儲存空間。快照會為應用程式儲存時間點的復原點。快照則使用耐久應用程式備份。
 
問:什麼是應用程式快照?
快照可讓您建立和還原應用程式到之前的時間點。如此一來,您便可以維持之前的應用程式狀態,並可隨時回復應用程式。您應控制任何特定時間,快照從零到數千個快照的產生方式。快照使用耐久應用程式備份,而 Kinesis Data Analytics 會根據備份大小收取費用。Kinesis Data Analytics 預設會對儲存在快照中的資料進行加密。您可以透過 API 刪除個別快照,或藉由刪除您的應用程式,將快照全部刪除。
 
問:支援哪些 Apache Flink 版本?
Amazon Kinesis Data Analytics for Apache Flink 應用程式支援 Apache Flink 1.6、1.8 和 1.11 (推薦)。 
 
Kinesis Data Analytics 中的 Apache Flink 1.11 支援 Java 開發套件版本 11、Python 3.7 和 Scala 2.1.2。您可以在 AWS 開發人員指南中的 建立應用程式部分找到更多資訊。

問:Kinesis Data Analytics for Apache Flink 應用程式是否可以在 Apache Beam 上執行?
是,支援使用 Apache Beam Java 開發套件版本 2.23 建置的串流應用程式。您可以在 Java 建置 Apache Beam 串流應用程式,並使用 Apache Flink 1.8 在 Amazon Kinesis Data Analytics、執行內部部署的 Apache Spark 以及 Apache 支援的其他執行引擎上執行這些應用程式。

問:什麼是 Apache Beam?
Apache Beam 是開放原始碼,定義串流和批次資料處理應用程式 (可跨多個執行引擎執行) 的統一模型。

建置 Amazon Kinesis Analytics Studio 應用程式

問:如何開發 Studio 應用程式?
可從 Amazon Kinesis Data Analytics Studio、Amazon Kinesis Data Streams 或 Amazon MSK 主控台開始,以幾個點按動作即可啟動無伺服器筆記本,立即查詢資料串流以及執行互動式資料分析。

互動式資料分析:您能在筆記本中以 SQL、Python 或 Scala 撰寫程式碼以與串流資料互動,查詢回應時間僅需幾秒。您可從筆記本之內使用內建視覺化探索資料,檢視串流資料的即時洞見,輕鬆開發採用 Apache Flink 技術的串流處理應用程式。

一旦程式碼準備好能作為生產應用程式執行時,您按一下即可將之轉換為串流處理應用程式,在無伺服器之下每秒處理 GB 量的資料。

串流處理應用程式:一旦您準備好可將程式碼提升以進行生產時,即可用點按方式建置程式碼。您可按一下筆記本介面中的 Deploy as stream processing application (部署為串流處理應用程式) 或在 CLI 中發出一個命令,Studio 就會為您處理具規模性地執行串流處理應用程式所需的一切基礎架構管理,並且啟用自動擴展和耐久狀態,如同在 Amazon Kinesis Data Analytics for Apache Flink 應用程式中一般。

問:應用程式的程式碼看起來是什麼樣子?
您可使用 Apache Flink 的 Table API,在筆記本內以偏好的 SQL、Python 或 Scala 語言撰寫程式碼。Table API 是高階抽象化與關聯式 API,支援 SQL 功能的超集合。其提供熟悉的操作,例如選擇、篩選、聯結、依條件分組、彙總等,以及串流特定概念,例如時段化。您可使用 %<解譯程式> 指定在筆記本一節中所使用的語言,並於語言之間輕鬆切換。解譯程式是 Apache Zeppelin 外掛程式,可讓開發人員指定筆記本中各節的語言或資料處理引擎。您亦可建立使用者定義的函數,加以參照以提升程式碼的功能性。

問:支援哪些 SQL 操作?
您可執行的 SQL 操作例如掃描與篩選 (SELECT, WHERE)、彙總 (GROUP BY、GROUP BY WINDOW、HAVING)、設定 (UNION、UNIONALL、INTERSECT、IN、EXISTS)、排序 (ORDER BY、LIMIT)、聯結 (INNER、OUTER、定時時段 –BETWEEN、AND、與暫存資料表聯結 – 隨時間追蹤變更的資料表)、前 N 個、重複資料刪除和模式辨識。其中部分查詢,例如 GROUP BY、OUTER JOIN 和前 N 個是串流資料的「結果更新」,換言之,會隨著處理串流資料,持續地更新結果。也支援其他 DDL 陳述式,例如 CREATE、ALTER 及 DROP。如需完整查詢和範例清單,請參閱 https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/sql/queries.html

問:支援 Python 和 Scala 的情形如何?
Apache Flink 的 Table API 可透過使用 Python 字串和 Scala 表達式的語言整合,支援 Python 和 Scala。受支援的操作與受支援的 SQL 操作非常類似,包括選擇、排序、分組、聯結、篩選和時段建立。如需完整操作和範例清單,請參閱此處: https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/tableApi.html

問:支援哪些版本的 Apache Flink 和 Apache Zeppelin?
Kinesis Data Analytics Studio 可支援 Apache Flink 1.11 版和 Apache Zeppelin 0.9 版。

問:Kinesis Data Analytics Studio 應用程式預設支援哪些整合?

  • 資料來源:Amazon Managed Streaming for Apache Kafka (Amazon MSK)、Amazon Kinesis Data Streams、Amazon S3
  • 目標或匯點:Amazon MSK、Amazon Kinesis Data Streams 及 Amazon S3


問:是否支援自訂整合?
您可多用幾個步驟和幾行 Apache Flink 程式碼 (Python、Scala 或 Java) 設定其他整合,以定義與 Apache Flink 支援的所有整合連線;所包括的目標例如 Amazon Elasticsearch Service、Amazon ElastiCache for Redis、Amazon Aurora、Amazon Redshift、Amazon DynamoDB、Amazon Keyspaces 等。在您建立或設定 Studio 應用程式時,可為這些自訂連接器附加可執行檔。

問:應該用 Kinesis Data Analytics Studio 還是 Kinesis Data Analytics SQL 進行開發?
我們建議從 Kinesis Data Analytics Studio 著手,因其能僅以一次處理,提供更全面的串流處理經驗。Kinesis Data Analytics Studio 可供您以自選的語言 (SQL、Python 和 Scala) 進行串流處理應用程式的開發、擴展至每秒 GB 級處理速度、支援數小時甚至數日的長時間執行運算、能在數秒內執行程式碼更新、可處理多重輸入串流,並且適用於各種輸入串流,包括 Amazon Kinesis Data Streams 和 Amazon MSK。

建置 Kinesis Data Analytics SQL 應用程式

對於 SQL 應用程式的新專案,我們建議以使用新 Kinesis Data Analytics Studio 優於 Kinesis Data Analytics。Kinesis Data Analytics Studio 兼具易用與進階分析功能,讓您幾分鐘內建置出複雜的串流處理應用程式。

為 SQL 應用程式設定輸入

問:Kinesis Data Analytics SQL 應用程式支援哪些輸入?
Kinesis Data Analytics SQL 應用程式支援兩種類型的輸入:串流資料來源和參考資料來源。串流資料來源是持續產生的資料,您的應用程式會讀取該資訊以進行處理。參考資料來源是靜態資料,應用程式使用它們讓從串流來源傳入的資料更豐富。每個應用程式不得有一個以上的串流資料來源和一個以上的參考資料來源。應用程式持續讀取和處理來自串流資料來源的新資料,包括 Amazon Kinesis Data Streams 或 Amazon Kinesis Data Firehose。應用程式讀取整個參考資料來源 (包括 Amazon S3),以透過 SQL JOIN 讓串流資料來源更豐富。
 
問:什麼是參考資料來源?
參考資料來源是靜態資料,應用程式使用它們讓從串流來源傳入的資料更豐富。您以物件的形式將參考資料存放在 S3 儲存貯體中。在 SQL 應用程式啟動的時候,Kinesis Data Analytics 會讀取 S3 物件並建立一個應用程式內 SQL 資料表來存放參考資料。之後,您的應用程式程式碼就能將它與應用程式內串流聯結在一起。您可以呼叫 UpdateApplication API 以更新 SQL 資料表中的資料。
 
問:如何在我的 SQL 應用程式中設定串流資料來源?
串流資料來源可以是 Amazon Kinesis 資料串流或 Amazon Kinesis Data Firehose 交付串流。Kinesis Data Analytics SQL 應用程式可在資料抵達時從串流資料來源持續地即時讀取新的資料。資料透過應用程式內串流在 SQL 程式碼中提供使用。應用程式內串流與 SQL 表的功能類似,因為您可以建立、插入以及從串流中選取項目。不過,它們的差別在於應用程式內串流是持續地以串流資料來源的新資料進行更新。
 
您可以使用 AWS 管理主控台新增串流資料來源。您可以參考 Kinesis Data Analytics for SQL 開發人員指南中的 設定應用程式輸入部分進一步了解來源。
 
問:如何在我的 SQL 應用程式中設定參考資料來源?
參考資料來源可以是 Amazon S3 物件。您的 Kinesis Data Analytics SQL 應用程式在開始執行時會讀取整個 S3 物件。資料透過資料表在 SQL 程式碼中提供使用。使用參考資料來源的最常用案例是使用 SQL JOIN 讓來自串流資料來源的資料更豐富。
 
您可以使用 AWS CLI 指定 S3 儲存貯體、物件、IAM 角色及關聯的結構描述來新增參考資料來源。Kinesis Data Analytics 會在您啟動應用程式的時候載入此資料,並在每次發出任何更新 API 呼叫時重新載入資料。
 
問:SQL 應用程式支援哪些資料格式?
Kinesis Data Analytics 可使用 DiscoverInputSchema API 偵測結構描述,並自動剖析 UTF-8 編碼的 JSON 和 CSV 記錄。這個結構描述會在插入應用程式內串流時套用到從串流讀取的資料。
 
對於不使用分隔符號和使用非 CSV 之分隔符號的其他 UTF-8 編碼資料,或是在探索 API 無法完全探索結構描述的情況下,您可以使用互動式結構描述編輯器定義結構描述,或使用字串操作函數來結構化資料。如需詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL 開發人員指南中的 使用結構描述探索功能和相關編輯一節。
 
問:輸入串流如何公開到 SQL 程式碼?
Kinesis Data Analytics for SQL 會套用您指定的結構描述,在串流來源將資料插入一或多個應用程式內串流,並在參考來源插入單一 SQL 資料表。應用程式內串流的預設數目是可滿足您大部分使用案例需求的數目。如果您發現應用程式無法跟上 CloudWatch 指標 MillisBehindLatest 定義的來源串流的最新資料,則應該提高此數目。所需的應用程式內串流數目會同時受到來源串流輸送量與查詢複雜性的影響。指定對應到來源串流的應用程式內串流數的參數稱為輸入平行度。

為 SQL 應用程式撰寫應用程式程式碼

問:SQL 應用程式的程式碼看起來是什麼樣子?
應用程式的程式碼是用來處理輸入和產生輸出的一系列 SQL 陳述式。這些 SQL 陳述式在應用程式內串流和參考表格上操作。應用程式內串流就像一個會持續更新的表格,您可以在該表格執行 SELECT 和 INSERT SQL 操作。您設定的來源和目標會透過應用程式內串流公開到 SQL 程式碼。您也可以建立其他應用程式內串流以存放中繼查詢結果。
 
您可以使用下列模式來使用應用程式內串流:
  • 一律在 INSERT 陳述式內使用 SELECT 陳述式。當您選取列時,會將結果插入另一個應用程式內串流。
  • 在幫浦內使用 INSERT 陳述式。您可以使用幫浦讓 INSERT 陳述式持續並寫入應用程式內串流。
  • 您使用幫浦將應用程式內串流綁在一起,從一個應用程式內串流選取,並插入另一個應用程式內串流。
 
下列 SQL 程式碼提供一個簡單、可運作的應用程式:
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    ticker_symbol VARCHAR(4),
    change DOUBLE,
    price DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM"    
    SELECT STREAM ticker_symbol, change, price    
    FROM "SOURCE_SQL_STREAM_001";
如需應用程式程式碼的詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL 開發人員指南中的 應用程式程式碼一節。
 
問:Kinesis Data Analytics 如何協助我編寫 SQL 程式碼?
Kinesis Data Analytics 包含常用案例的分析範本庫,包括串流篩選、輪轉時段及異常偵測。您可以在 AWS 管理主控台中從 SQL 編輯器存取這些範本。建立應用程式並瀏覽到 SQL 編輯器之後,即可在主控台左上角使用範本。
 
問:如何在 Kinesis Data Analytics 中執行即時異常偵測?
Kinesis Data Analytics 針對數個進階分析加入了預先建置的 SQL 函數,其中一個就用於異常偵測。您只需要從 SQL 程式碼呼叫此函數,就能即時偵測異常。Kinesis Data Analytics 使用 Random Cut Forest 演算法來實作異常偵測。如需 Random Cut Forests 的詳細資訊,請參閱 串流資料異常偵測白皮書

在 SQL 應用程式中設定目標

問:支援哪些目標?
Kinesis Data Analytics for SQL 支援每個應用程式最多三個目標。您可以將 SQL 結果保留到 Amazon S3、Amazon Redshift 和 Amazon Elasticsearch Service (透過 Amazon Kinesis Data Firehose) 以及 Amazon Kinesis Data Streams。您可以寫入 Kinesis Data Analytics 不直接支援的目標,方法是將 SQL 結果傳送到 Amazon Kinesis Data Streams,然後利用它與 AWS Lambda 的整合傳送到您所選的目標。
 
問:如何設定目標?
在應用程式的程式碼中,將 SQL 陳述式的輸出寫入一或多個應用程式內串流。您可以選擇在應用程式新增輸出組態,將寫入特定應用程式串流的所有物件保留到最多四個外部目標。這些外部目標可以是 Amazon S3 儲存貯體、Amazon Redshift 資料表、Amazon Elasticsearch Service 網域 (透過 Amazon Kinesis Data Firehose) 和 Amazon Kinesis 資料串流。每個應用程式支援最多四個目標,可以是上述任意組合。如需詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL 開發人員指南中的 設定輸出串流一節。
 
問:不直接支援我慣用的目標。我該如何將 SQL 結果傳送到此目標?
您可以使用 Kinesis Data Analytics for SQL,透過 AWS Lambda 寫入未直接支援使用的目標。我們建議您將結果寫入 Amazon Kinesis 資料串流,然後使用 AWS Lambda 讀取處理的結果,並將它傳送到所選的目標。如需詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL 開發人員指南中的 範例:AWS Lambda 整合一節。或者,您可以使用 Kinesis Data Firehose 交付串流將資料載入 Amazon S3,然後觸發 AWS Lambda 函數以讀取該資料,並將它傳送到您所選的目標。如需詳細資訊,請參閱 AWS Lambda 開發人員指南中的 將 AWS Lambda 與 Amazon S3 結合使用一節。
 
問:Kinesis Data Analytics 提供哪種交付模型?
Kinesis Data Analytics SQL 應用程式使用「至少使用一次」交付模型,將應用程式輸出到設定的目標。Kinesis Data Analytics 應用程式採用內部檢查點,它們是將輸出記錄交付到目標的時間點,且無資料損失。服務視需要使用檢查點以確保應用程式輸出至少一次交付到設定的目標。如需交付模型的詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL 開發人員指南中的 設定應用程式輸出一節。

與其他串流處理解決方案的比較

問:Amazon Kinesis Data Analytics 與使用 Amazon Kinesis Client Library 執行我自己的應用程式有何不同?
Amazon Kinesis Client Library (KCL) 是一個預先建置的程式庫,可協助您建置取用者應用程式,以讀取和處理來自 Amazon Kinesis 資料串流的資料。KCL 可處理複雜的問題,例如適應資料串流量的變化、負載平衡串流資料、協調分散式服務和利用容錯能力處理資料。KCL 讓您能夠在建置應用程式時將焦點擺在商業邏輯。
 
使用 Kinesis Data Analytics,您可以處理和查詢即時的串流資料。您使用標準 SQL 來處理資料串流,且不必學習任何新的程式設計語言。您只需要將 Kinesis Data Analytics 指向傳入的資料串流、編寫 SQL 查詢,然後指定要載入結果的位置。Kinesis Data Analytics 使用 KCL 做為基礎應用程式的一部分,從串流資料來源讀取資料。服務會為您免除這部分的工作,以及許多與使用 KCL 有關較為複雜的概念,如插入檢查點。
 
如果您想要使用全受管解決方案且希望使用 SQL 來處理串流的資料,則應該使用 Kinesis Data Analytics。如果您需要建置自訂處理解決方案,但 Kinesis Data Analytics 未能符合其需求,而且您有能力管理所建置的取用者應用程式,請使用 KCL。

服務水準協議

問:Amazon Kinesis Data Analytics SLA 提供哪些保證?

Amazon Kinesis Data Analytics SLA 保證 Amazon Kinesis Data Analytics 每個月正常執行時間百分比至少為 99.9%。

問:如何知道我是否符合 SLA 服務抵扣的資格?

如果您在一個以上的可用區域內執行某項任務,而在任何一個月的結算週期內,同一個區域每個月的正常執行時間百分比低於 99.9%,則根據 Amazon Kinesis Data Analytics SLA,您有資格獲得 Amazon Kinesis Data Analytics 的 SLA 積分。

如需 SLA 所有條款與條件的完整詳細資訊,以及如何提交索賠的詳細資訊,請參閱 Amazon Kinesis SLA 詳細資訊頁面

Amazon Kinesis Data Analytics 入門

瀏覽 Kinesis Data Analytics 定價頁面
計算您的成本

瀏覽 Amazon Kinesis Data Analytics 定價頁面

檢閱入門指南
查看入門指南

透過 SQLApache Flink 的逐步指南了解如何使用 Amazon Kinesis Data Analytics。

開始在主控台進行建置
開始建立串流應用程式

從 Amazon Kinesis Data Analytics 主控台建立您的第一個串流應用程式。