一般問題

問:什麼是 Amazon Kinesis Data Analytics?
Amazon Kinesis Data Analytics 是分析串流資料、取得可行洞見,以及即時回應業務和客戶需求最簡單的方法。Amazon Kinesis Data Analytics 可簡化建構、管理及整合串流應用程式與其他 AWS 服務的複雜程序。您可以針對常見處理功能,使用內建範本和運算子快速建立 SQL 查詢和精密的 Java 應用程式,以組織、轉換、彙總和分析任何規模的資料。
 
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 Kinesis Data Streams 的 IoT 感應器資料、接著按照感應器類型將資料歸類,依序移除重複資料,根據指定結構描述將資料正規化,然後將資料送交到 Amazon S3。
 
持續指標產生
持續指標產生應用程式可讓您監控和了解您的資料在一段時間內的趨勢。您的應用程式可以將串流資料彙總到關鍵資訊中,接著將其與報告資料庫和監控服務無縫整合,來即時服務您的應用程式和使用者。透過 Kinesis Data Analytics,您可以使用 SQL 或 Java 程式碼在特定時段內持續產生時間序列分析。舉例來說,您可以每分鐘計算出最高分玩家,然後將資料傳送到 Amazon DynamoDB,為行動遊戲建立一個即時排行榜。或者,可以每五分鐘計算出您網站的不重複訪客數,然後將處理的結果傳送到 Amazon Redshift,以追蹤網站的流量。
 
回應式即時分析
回應式即時分析應用程式會在特定指標達到預定的閾值時,傳送即時警示或通知,或者在更進階的用途中,當您的應用程式使用機器學習演算法偵測到異常時,傳送即時警示或通知。這類應用程式能讓您馬上即時回應業務變更,像是預測行動應用程式的用戶棄用率,以及識別效能降級的系統等。例如,應用程式可以運算客戶端 API 在一段時間後的可用性或成功率,然後將結果傳送到 Amazon CloudWatch。您可以建置另一個應用程式尋找滿足特定條件的事件,然後使用 Amazon Kinesis Data Streams 和 Amazon Simple Notification Service (SNS) 自動通知相關客戶。
 
問:如何開始將 Java 應用程式使用於 Kinesis Data Analytics?
登入 Amazon Kinesis Data Analytics 主控台並建立新的串流處理應用程式。您也可以使用 AWS CLIAWS 開發套件。在建立應用程式後,前往您慣用的整合開發環境,接著連接至 AWS,然後安裝開放原始碼 Java 程式庫。這些開放原始碼程式庫以 Apache Flink 以及 AWS SDK.為基礎,Apache Flink 是處理資料串流的開放原始碼架構和引擎。可擴展的程式庫包括超過 25 個預先建立的系統處理作業 (如視窗和彙總),以及 AWS 服務整合 (如 Amazon Kinesis Data Streams 和 Amazon Kinesis Data Firehose)。完成建立後,請將您的程式碼上傳到 Amazon Kinesis Data Analytics,該服務便會處理持續執行即時應用程式所需的所有事項,其中包括依傳入的資料量及輸送率自動擴展。
 
問:如何開始將 SQL 應用程式使用於 Kinesis Data Analytics?
登入 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 Developer Guide 中的 Limits。 如需用於 Java 應用程式之服務 限制的詳細資訊,請參閱 Amazon Kinesis Data Analytics for Java Developer Guide 中的 Limits 章節。

主要概念

問:什麼是 Kinesis Data Analytics 應用程式?
應用程式是您所使用的 Kinesis Data Analytics 實體。Kinesis Data Analytics 應用程式可持續即時讀取和處理串流資料。您可以使用 SQL 或 Java 撰寫應用程式程式碼,來處理傳入的串流資料並產生輸出。接著,Kinesis Data Analytics 會將輸出寫入設定的目標。
 
每個應用程式都由三個主要元件組成:
 
輸入 – 應用程式的串流來源。在輸入設定中,您將串流來源對應到應用程式內資料串流。資料會從您的資料來源流到應用程式內資料串流。您將使用您的應用程式程式碼,處理來自這些應用程式內資料串流的資料,然後將經過處理的資料傳送到後續的應用程式內資料串流或目標。對於 Java 應用程式,您應該將輸入加到應用程式的程式碼內,若是 SQL 應用程式,請透過 API 來進行。
 
應用程式的程式碼 – 用來處理輸入並產生輸出的一系列 Java 運算子或 SQL 陳述式。最簡單來說,應用程式的程式碼可以是單一 Java 運算子或 SQL 陳述式,它會讀取與串流來源關聯的應用程式內資料串流,然後寫入與輸出關聯的應用程式內資料串流。您可以撰寫 Java 或 SQL 程式碼,將初步應用程式內資料串流分割成多個串流,然後將額外的邏輯套用至這些隔開的串流。
 
輸出 – 您可以建立一或多個應用程式內串流來保存中繼結果。您之後可以選擇性地設定應用程式輸出,將特定應用程式內串流中的資料保留到外部目標。對於 Java 應用程式,您應該將這些輸出加到應用程式的程式碼內,若是 SQL 應用程式,請透過 API 來進行。
 
問:什麼是應用程式內資料串流?
應用程式內資料串流是持續將資料存放到您應用程式的實體,讓您可以執行處理。您的應用程式會持續寫入並讀取應用程式內資料串流。對於 Java 應用程式,您會透過串流運算子來處理資料,藉此與應用程式內串流進行互動。運算子會將一或多個資料串流轉換成新的資料串流。至於 SQL 應用程式,您與應用程式內串流互動的方式就跟使用 SQL 陳述式與 SQL 資料表互動的方式一樣。您會將 SQL 陳述式套用於一或多個資料串流,然後將結果插入新的資料串流。
 
問:支援哪種應用程式程式碼?
對於 Java 應用程式,Kinesis Data Analytics 支援使用 Apache FlinkAWS SDK 建構的 Java 應用程式。至於 SQL 應用程式,Kinesis Data Analytics 支援 ANSI SQL 搭配部分 SQL 標準的延伸模組,可讓您更輕鬆地使用串流資料。

管理應用程式

問:如何監控 Kinesis Data Analytics 應用程式的操作和效能?
AWS 提供可用來監控 Kinesis Data Analytics 應用程式的各種工具。您可以設定其中一些工具來為您進行監控。如需進一步了解如何監控您的應用程式,請參閱:
 
問:如何管理和控制對 Kinesis Data Analytics 應用程式的存取權限?
Kinesis Data Analytics 需要許可才可從應用程式指定的串流資料來源讀取記錄。Kinesis Data Analytics 還需要許可,才能將應用程式輸出寫入應用程式輸出組態中指定的目標。建立 Kinesis Data Analytics 可以擔任的 IAM 角色即可授予這些許可。您授予此角色的許可決定了當服務擔任角色時 Kinesis Data Analytics 可以執行的動作。如需詳細資訊,請參閱:
 
問:Kinesis Data Analytics 如何擴展我的應用程式?
在大部分情況下,Kinesis Data Analytics 會彈性地擴展您的應用程式以應付來源串流的資料輸送量和查詢複雜性。Kinesis Data Analytics 以 Amazon Kinesis 處理單元 (KPU) 的形式佈建容量。一個 KPU 可提供 1 個 vCPU 和 4GB 記憶體。
 
對於 Java 應用程式,Kinesis Data Analytics 會為每個 KPU 指派 50GB 的執行應用程式儲存空間,供您的應用程式使用於檢查點,您也可以透過暫存磁碟來使用。檢查點是執行中應用程式的最新備份,可用來立即復原損毀的應用程式。您也可以在 API 中使用 Parallelism 和 ParallelismPerKPU 參數,控制 Kinesis Data Analytics 平行執行 Java 應用程式工作 (例如讀取來源或執行運算子)。平行度用於定義工作的平行執行個體數目。所有運算子、來源和匯點都會搭配定義的平行度 (預設為 1) 來執行。每個 KPU 的平行度則定義您應用程式每個 Kinesis 處理單元 (KPU) 的平行工作的數量,預設為 1。如需詳細資訊,請參閱 Amazon Kinesis Data Analytics for Java Developer Guide 中的 Scaling
 
對於 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 Developer Guide 中的 Configuring Application Input
 
問:建置和管理 Kinesis Data Analytics 應用程式的相關最佳實務為何?
如需 SQL 適用的最佳實務詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL Developer Guide 中的 Best Practices 部分,其中涵蓋管理應用程式、定義輸入結構描述、連線到輸出,以及編寫應用程式程式碼等內容。

定價和計費

問:Kinesis Data Analytics 的費用是多少?
使用 Amazon Kinesis Data Analytics,您只需按實際用量付費。使用 Amazon Kinesis Data Analytics 不需要佈建資源,也不用預付費用。
 
我們會根據您執行串流處理應用程式所使用的 Amazon Kinesis 處理單元 (或 KPU) 數量,按時收費。單一 KPU 是由 1 個 vCPU 運算和 4 GB 記憶體組成的一個串流處理容量單位。根據處理複雜性和已處理的串流資料傳輸量而定,記憶體和運算的需求會有所不同,因此 Amazon Kinesis Data Analytics 會自動擴展您的串流處理程式所需的 KPU 數目。
 
在 Java 應用程式方面,您需為每個應用程式支付額外一個 KPU 的應用程式協調費用。此外,也會針對 Java 應用程式收取執行中應用程式儲存空間和耐久應用程式備份的費用。執行中應用程式儲存空間用來在 Amazon Kinesis Data Analytics 提供狀態處理能力,並按每月每 GB 收費。耐久應用程式備份為選購功能並按每月每 GB 收費,可將應用程式還原到某個時間點。
 
如需定價的詳細資訊,請參閱 Amazon Kinesis Data Analytics 定價頁面
 
問:AWS 免費方案是否提供 Kinesis Data Analytics?
否。AWS 免費方案目前不包括 Kinesis Data Analytics。AWS 免費方案是提供一組 AWS 服務免費試用的計劃。
 
問:使用執行中但未處理任何來源資料的 Kinesis Data Analytics 應用程式是否需要付費?
針對 SQL 應用程式,如果您的 Kinesis Data Analytics 應用程式正在執行,只會向您收取一個 KPU 的最低費用。至於 Java 應用程式,如果您的 Kinesis Data Analytics 應用程式正在執行,則會收取兩個 KPU 和 50 GB 執行應用程式儲存空間的最低費用。
 
問:除了 Kinesis Data Analytics 費用以外,還會產生任何其他費用嗎?
Kinesis Data Analytics 是全代管的串流處理解決方案,與讀取資料的串流來源及寫入處理資料的目標沒有關係。我們會根據您在應用程式中讀取和寫入的服務分開收費。

建構 Java 應用程式

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

問:什麼是 Apache Flink?
Apache Flink 是用於串流和批次資料處理的開放原始碼架構和引擎。它讓串流應用程式的建構變得輕鬆,因為它提供強大的運算子,並且可以妥善解決重複處理之類的核心串流問題。Apache Flink 透過資料串流,為分散式運算提供資料分散、通訊及容錯等能力。
 
問:如何開發應用程式?
您可以從下載包括 AWS SDK、Apache Flink 和 AWS 服務適用容器的開放原始碼程式庫開始。如需如何下載程式庫並建立您的第一個應用程式的操作說明,您可以參閱 Amazon Kinesis Data Analytics for Java Developer Guide
 
問:應用程式的程式碼看起來是什麼樣子?
您可以使用資料串流和串流運算子撰寫 Java 程式碼。應用程式資料串流是您使用 Java 程式碼執行處理所依據的資料結構。由來源傳出的資料會持續流入應用程式資料串流。一或多個串流運算子會用來定義您的應用程式資料串流處理,包括 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 Java 包含取自 Apache Flink 超過 25 個運算子,您可以使用這些運算子解決廣泛的使用案例問題,包括 Map、KeyBy、Aggregations、Window Join 和 Window。Map 可讓您執行任意處理,從傳入資料串流中取出一個元素,然後產生另一個元素。從邏輯上說,KeyBy 使用指定索引鍵來組織資料,讓您可以將類似資料點一起處理。Aggregations 會在多個索引鍵之間執行處理,如 sum、min 和 max。Window Join 會在指定索引鍵和視窗上將兩個資料串流聯結在一起。Window 使用索引鍵將資料分組,通常是時基操作,如計算 5 分鐘時間區段內的不重複項目數。
 
如果上述運算子不符合您的需求,您可以自行建立自訂運算子。關於更多範例,您可以參閱 Amazon Kinesis Data Analytics for Java Developer Guide 中的 Operators 部分。如需完整的 Apache Flink 運算子清單,請參閱 Apache Flink 文件的 運算子部分。
 
問:Kinesis Data Analytics Java 應用程式支援哪些整合?
您可以使用極少的程式碼,即可設定整合。這個以 Apache Flink 為基礎的開放原始碼程式庫支援串流來源和目標 (即所謂的匯點),來傳送處理資料。此外,也支援透過非同步輸入/輸出連接器執行資料豐富化。此開放原始碼程式庫隨附 AWS 特有的連接器,如下所示。
  • 串流資料來源:Amazon Kinesis Data Streams
  • 目標或匯點:Amazon Kinesis Data Streams、Amazon Kinesis Data Firehose、Amazon DynamoDB 和 Amazon S3 (透過檔案匯點整合)。
 
Apache Flink 也包括其他 連接器,如 Apache Kafka、Apache Casssandra、Elasticsearch 及其他等。
 
問:是否支援自訂整合?
您可以將來源或目標新增到您的應用程式,方法如下:以一組原始型別為建立基礎,這些原始型別必須可讓您讀取和寫入檔案、目錄、通訊端或是您可以透過網際網路存取的任何內容。Apache Flink 提供適用於 資料來源資料匯點的原始型別。這些原始型別包含不同的設定,例如,能透過一次作業、非同步或同步方式持續讀取並寫入資料,以及其他設定等。舉例來說,您可以藉由延伸現有的檔案來源整合,設定應用程式持續讀取 Amazon S3。
 
問:Kinesis Data Analytics for Java 應用程式提供哪種交付模型?
如果應用程式是使用冪等運算子 (包括來源和匯點) 建立的,則 Kinesis Data Analytics Java 應用程式會使用「恰好一次」的交付模型。也就是說,處理過的資料影響下游結果恰好一次。檢查點會儲存目前的應用程式狀態,並讓 Kinesis Data Analytics for Java Applications 還原應用程式的位置,以提供與無失效相同的語義。用於 Java 應用程式的檢查點會透過 Apache Flink 的 檢查點功能提供。根據預設,Kinesis Data Analytics for Java Applications 會使用 Apache Flink 的「恰好一次」語義。如果您設計應用程式時,使用利用 Apache Flink「恰好一次」語義的來源、運算子和匯點,則您的應用程式將支援恰好處理一次的語義。
 
問:是否可以從我的應用程式儲存空間存取本機儲存空間?
是。Kinesis Data Analytics for Java Applications 會為您應用程式的每個 Kinesis 處理單元 (KPU) 提供 50 GB 的執行中應用程式儲存空間。Kinesis Data Analytics 會與您的應用程式一起擴展儲存空間。使用檢查點儲存應用程式狀態時,會使用執行中應用程式儲存空間。此外,您的應用程式程式碼也可以存取此儲存空間,將它當成臨時磁碟來使用於快取資料或任何其他用途。Kinesis Data Analytics 可隨時從執行中應用程式儲存空間,將未透過檢查點儲存的資料移除 (例如運算子、來源、匯點)。所有儲存在執行中應用程式儲存空間的資料都會採用靜態加密來保護。
 
問:Kinesis Data Analytics for Java 如何自動備份我的應用程式?
Kinesis Data Analytics 會使用檢查點和快照,自動備份您的執行中應用程式的狀態。檢查點會儲存目前的應用程式狀態,並讓 Kinesis Data Analytics for Java Applications 還原應用程式的位置,以提供與無失效相同的語義。檢查點會使用執行中應用程式儲存空間。快照會為應用程式儲存時間點的復原點。快照則使用耐久應用程式備份。
 
問:什麼是應用程式快照?
快照可讓您建立和還原應用程式到之前的時間點。如此一來,您便可以維持之前的應用程式狀態,並可隨時回復應用程式。您應控制任何特定時間,快照從零到數千個快照的產生方式。快照使用耐久應用程式備份,而 Kinesis Data Analytics 會根據備份大小收取費用。Kinesis Data Analytics 預設會對儲存在快照中的資料進行加密。您可以透過 API 刪除個別快照,或藉由刪除您的應用程式,將快照全部刪除。
 
問:支援哪些 Apache Flink 版本?
Amazon Kinesis Data Analytics for Java Applications 支援 Apache Flink 1.6 和 Java 第 8 版。

建構 SQL 應用程式

為 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 Developer Guide 的 Configuring Application Input 部分進一步了解來源。
 
問:如何在我的 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 Developer Guide 中的 Using the Schema Discovery Feature and Related Editing
 
問:輸入串流如何公開到 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 Developer Guide 中的 Application Code
 
問: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 Developer Guide 中的 Configuring Output Streams
 
問:不直接支援我慣用的目標。我該如何將 SQL 結果傳送到此目標?
您可以使用 AWS Lambda 寫入未直接支援使用的目標。我們建議您將結果寫入 Amazon Kinesis 資料串流,然後使用 AWS Lambda 讀取處理的結果,並將它傳送到所選的目標。如需詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL Developer Guide 中的 Example: AWS Lambda Integration。或者,您可以使用 Kinesis Data Firehose 交付串流將資料載入 Amazon S3,然後觸發 AWS Lambda 函數以讀取該資料,並將它傳送到您所選的目標。如需詳細資訊,請參閱 AWS Lambda Developer Guide 中的 Using AWS Lambda with Amazon S3
 
問:Kinesis Data Analytics 提供哪種交付模型?
Kinesis Data Analytics SQL 應用程式使用「至少使用一次」交付模型,將應用程式輸出到設定的目標。Kinesis Data Analytics 應用程式採用內部檢查點,它們是將輸出記錄交付到目標的時間點,且無資料損失。服務視需要使用檢查點以確保應用程式輸出至少一次交付到設定的目標。如需交付模型的詳細資訊,請參閱 Amazon Kinesis Data Analytics for SQL Developer Guide 中的 Configuring Application Output

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

問: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 入門

Product-Page_Standard-Icons_01_Product-Features_SqInk
計算您的成本

瀏覽定價頁面

進一步了解 
Product-Page_Standard-Icons_01_Product-Features_SqInk
查看入門指南

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

Product-Page_Standard-Icons_03_Start-Building_SqInk
開始建立串流應用程式

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