Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Amazon Kinesis Analytics による
ストリーミングデータのリアルタイム分析
2016 年 10 月 4 日
アマゾンウェブサービスジャパン株式会社
ソリューションアーキテクト|内海英一郎
スピーカー
紹介
アマゾンウェブサービス
ジャパン株式会社
ソリューションアーキテクト
❤ Amazon Kinesis
❤ Java
❤ LMAX Disruptor
うちうみえいいちろう
内海英一郎|@eiichirouchiumi
本セッションの
アジェンダ
• Amazon Kinesis プラットフォーム概要
• Amazon Kinesis Analytics
– 利用方法
– 分析例
– 注意事項
Amazon Kinesis プラットフォーム概要
はるか遠い昔「データ分析」は
ヒストリカルレポートやダッシュボードそのものであった
– M. Gualtieri, Forrester @ AWS re:Invent 2014
今日の「データ分析」は
過去・現在を知り、近未来を予測するものへと変わっている
– M. Gualtieri, Forrester @ AWS re:Invent 2014
多くのデータは
持続的に生成されている
モバイルアプリケーション Web クリックストリーム アプリケーションログ
メータリングレコード IoT センサー スマートビルディング
データの価値は
時間の経過とともに減少する
Perishable Insights
– M. Gualtieri, Forrester
新しいデータほど意思決定における価値が高い
(もし、その効力が失われる前にアクションが起こせるのであれば)
...
ストリーミングデータを
リアルタイムに分析するには?
新しいアプローチ
一時的
クエリー データ
永続的 永続的
クエリー データ
一時的
アドホックなクエリーを
永続化されたデータセットに
適用すると都度結果セットが
得られる
永続化されたク...
ストリーミングデータを
リアルタイムに分析するには?
新しいプロセス
蓄積したデータを分析してアクションを起こす
収集 処理 蓄積 分析 アクション
分析してアクションを起こした後にデータを蓄積
収集 処理 分析 アクション 蓄積
プラットフォームに
求められる特性
1 連続性 最新のデータを常に処理し続けられること
2 応答性 アクションへ分析結果をフィードバックするメカニズムがあること
3 高速性 高頻度かつ低遅延で処理が完了すること
4 正確性 処理の重複可能性が明...
Amazon Kinesis
Amazon Kinesis プラットフォーム
ストリーミングデータを収集・処理するためのフルマネージドサービス群
Amazon Kinesis
Streams
ストリーミングデータを
処理するための
アプリケーションを
独自に構築
Amazo...
Kinesis Streams
ストリーミングデータを処理するためのアプリケーションを独自に構築
2
3
1 管理が容易
独自のリアルタイムアプリケーション
低コスト
必要なキャパシティをセットしてストリームを作成するだけで利用可能。
スループ...
Kinesis Streams の
アーキテクチャ概要
Front
end
認証・認可
3 アベイラビリティゾーンの
永続ストレージに強い整合性でデータを複製
数百万のソースが
1 時間あたり数百 TB の
データを生成
集約して S3 にアー...
Kinesis Streams の
主要なコンセプト
• データの種類や処理の用途に応じて「ストリーム」を作成。ストリームは 1 つ以上の「シャード」で構成
• 保存されるデータの単位を「データレコード」と呼び、保持期間はデフォルトで 24 時...
Kinesis Streams をサポートする
プロデューサー/コンシューマー
プロデューサー (データ送信側) コンシューマー (データ処理側)
AWS SDK
Kinesis Producer
Library
Kinesis Agent
A...
Kinesis Firehose
ストリーミングデータを Amazon S3, Amazon Redshift, Amazon ES へ
簡単に配信
2
3
1 管理不要
データストアとダイレクトに統合
シームレスにスケール
アプリケーションの...
Kinesis Firehose の
主要なコンセプト
• 配信先に応じて「配信ストリーム」を作成
• シャードの作成やパーティションキーの指定不要
• 1 データレコードの最大サイズは 1 MB
• 制限なしにスケールするよう設計
• 米国東...
Kinesis Analytics
ストリーミングデータを標準的な SQL クエリーでリアルタイムに分析
2
3
1 標準 SQL
リアルタイム分析アプリケーション
弾力的にスケール
複雑な処理フレームワークやプログラミング言語の学習不要
秒以...
Kinesis Analytics の
主要なコンセプト
• 分析単位に「アプリケーション」を作成し、入力/出力となる「ストリーミングソース/デスティネーション」を設定
• ストリーミングソース/デスティネーションはアプリケーション内部の「入力...
Amazon Kinesis Analytics
アプリケーションを作成
アプリケーション名と
説明を入力
ストリーミングソースを
設定
既存ストリーミングソースを
選択/新規作成
行のスキーマを自動判定
スキーマの手動設定も可能
分析用の SQL を記述
内部(入力)ストリームの
プレビューを表示
内部(出力)ストリームの
プレビューを表示
ストリーミングデスティ
ネーションを設定
既存ストリーミングデスティ
ネーションを選択/新規作成
内部(出力)ストリームとの
対応と出力フォーマットを設定
アプリケーション内部ストリームと
ポンプ
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
ticker_symbol VARCHAR(4), sector VARCHAR(12), cha...
様々な
タイムスタンプ
CREATE OR REPLACE PUMP "STREAM_PUMP" AS
INSERT INTO "DESTINATION_SQL_STREAM“
SELECT STREAM
your_own_event_time...
ウィンドウ
問い合わせ
タンブリング
ウィンドウ
スライディング
ウィンドウ
…FROM "SOURCE_SQL_STREAM_001"
GROUP BY ticker_symbol,
FLOOR("SOURCE_SQL_STREAM_001"...
前処理の例
フィルタリング
• 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言
• ポンプ "STREAM_PUMP" を宣言
• sector カラムの値が '%TECH%' に正規表現マッチする行のみを抽出...
前処理の例
文字列操作
• 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言
• ポンプ "MY_PUMP" を宣言
• referrer カラムの値から SUBSTRING() 関数にて単純ドメイン名の部分文字...
前処理の例
参照テーブルの結合
• (参照テーブル "CompanyName" をアプリケーションに事前追加)
• 内部(出力)ストリーム "DESTINATION_SQL_STREAM"/ポンプ "STREAM_PUMP" を宣言
• 内部(...
基本的な分析の例
トップ K アイテムの算出
• 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言
• ポンプ "STREAM_PUMP" を宣言
• TOP_K_ITEMS_TUMBLING() 関数へ "SO...
基本的な分析の例
アイテム数のカウント
• 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言
• ポンプ "STREAM_PUMP" を宣言
• COUNT_DISTINCT_ITEMS_TUMBLING() 関...
基本的な分析の例
シンプルなアラート
• 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言
• ポンプ "STREAM_PUMP" を宣言
• 10 秒のスライディングウィンドウから ticker_symbol ...
応用的な分析の例
アノマリーディテクション(異常検出)
• 内部(出力)ストリーム “TEMP_SQL_STREAM“ および "DESTINATION_SQL_STREAM" を宣言
• ポンプ “STREAM_PUMP” および “OUTP...
代表的な
制限事項
• 米国東部(バージニア北部)/米国西部(オレゴン)/欧州(アイルランド)
リージョンで利用可能
• アプリケーション内部ストリームの最大行サイズは 50 KB
• 参照データソースの最大サイズは 1 GB
• リージョンあ...
参考
ドキュメント
• Amazon Kinesis Analytics
– https://aws.amazon.com/jp/kinesis/analytics/
• Amazon Kinesis Analytics Developer G...
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
Upcoming SlideShare
Loading in …5
×

Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析

4,723 views

Published on

db tech showcase
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析

Published in: Technology
  • Be the first to comment

Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析

  1. 1. Amazon Kinesis Analytics による ストリーミングデータのリアルタイム分析 2016 年 10 月 4 日 アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト|内海英一郎
  2. 2. スピーカー 紹介 アマゾンウェブサービス ジャパン株式会社 ソリューションアーキテクト ❤ Amazon Kinesis ❤ Java ❤ LMAX Disruptor うちうみえいいちろう 内海英一郎|@eiichirouchiumi
  3. 3. 本セッションの アジェンダ • Amazon Kinesis プラットフォーム概要 • Amazon Kinesis Analytics – 利用方法 – 分析例 – 注意事項
  4. 4. Amazon Kinesis プラットフォーム概要
  5. 5. はるか遠い昔「データ分析」は ヒストリカルレポートやダッシュボードそのものであった – M. Gualtieri, Forrester @ AWS re:Invent 2014
  6. 6. 今日の「データ分析」は 過去・現在を知り、近未来を予測するものへと変わっている – M. Gualtieri, Forrester @ AWS re:Invent 2014
  7. 7. 多くのデータは 持続的に生成されている モバイルアプリケーション Web クリックストリーム アプリケーションログ メータリングレコード IoT センサー スマートビルディング
  8. 8. データの価値は 時間の経過とともに減少する Perishable Insights – M. Gualtieri, Forrester 新しいデータほど意思決定における価値が高い (もし、その効力が失われる前にアクションが起こせるのであれば) ☞ リアルタイム分析の必要性
  9. 9. ストリーミングデータを リアルタイムに分析するには? 新しいアプローチ 一時的 クエリー データ 永続的 永続的 クエリー データ 一時的 アドホックなクエリーを 永続化されたデータセットに 適用すると都度結果セットが 得られる 永続化されたクエリーを 連続的にストリーミングデータに 適用すると結果ストリームが 得られる
  10. 10. ストリーミングデータを リアルタイムに分析するには? 新しいプロセス 蓄積したデータを分析してアクションを起こす 収集 処理 蓄積 分析 アクション 分析してアクションを起こした後にデータを蓄積 収集 処理 分析 アクション 蓄積
  11. 11. プラットフォームに 求められる特性 1 連続性 最新のデータを常に処理し続けられること 2 応答性 アクションへ分析結果をフィードバックするメカニズムがあること 3 高速性 高頻度かつ低遅延で処理が完了すること 4 正確性 処理の重複可能性が明確であること。時刻の精度が高いこと 5 耐久性 データが失われないこと。繰り返し処理できること 6 信頼性 高速にフェイルオーバーし、常に利用できること
  12. 12. Amazon Kinesis
  13. 13. Amazon Kinesis プラットフォーム ストリーミングデータを収集・処理するためのフルマネージドサービス群 Amazon Kinesis Streams ストリーミングデータを 処理するための アプリケーションを 独自に構築 Amazon Kinesis Analytics ストリーミングデータを 標準的な SQL クエリーで リアルタイムに分析 Amazon Kinesis Firehose ストリーミングデータを Amazon S3, Amazon Redshift, Amazon ES へ 簡単に配信
  14. 14. Kinesis Streams ストリーミングデータを処理するためのアプリケーションを独自に構築 2 3 1 管理が容易 独自のリアルタイムアプリケーション 低コスト 必要なキャパシティをセットしてストリームを作成するだけで利用可能。 スループットやデータ量の変化に応じてスケール Amazon Kinesis Client Library, Apache Spark/Storm, AWS Lambda 等を利用してストリーム処理を実装 あらゆるスケールのワークロードで高いコスト効果
  15. 15. Kinesis Streams の アーキテクチャ概要 Front end 認証・認可 3 アベイラビリティゾーンの 永続ストレージに強い整合性でデータを複製 数百万のソースが 1 時間あたり数百 TB の データを生成 集約して S3 にアーカイブ End point 機械学習 /スライディングウィンドウ分析 リアルタイムダッシュボード /アラート データウェアハウスにロード 順序つきイベントストリームとして 複数のアプリケーションから 同時アクセス可能 AZ AZ AZ
  16. 16. Kinesis Streams の 主要なコンセプト • データの種類や処理の用途に応じて「ストリーム」を作成。ストリームは 1 つ以上の「シャード」で構成 • 保存されるデータの単位を「データレコード」と呼び、保持期間はデフォルトで 24 時間/最長で 7 日間 • 1 データレコードの最大サイズは 1 MB • データ送信側のキャパシティは 1 シャードあたり秒間 1 MB もしくは 1,000 PUT レコード • データ処理側のキャパシティは 1 シャードあたり秒間 2 MB もしくは 5 回の読み取りトランザクション • ストリーム内のシャード数を増減することでスループットをコントロール KinesisStreams エ ン ド ポ イ ン ト シャード 0 シャード 1 シャード ..N データ送信側 データ処理側 Amazon S3 DynamoDB Amazon Redshift Amazon EMR データ レコード ストリーム
  17. 17. Kinesis Streams をサポートする プロデューサー/コンシューマー プロデューサー (データ送信側) コンシューマー (データ処理側) AWS SDK Kinesis Producer Library Kinesis Agent AWS IoT Kinesis Log4j Appender Get* API Kinesis Client Library Fluentd Kinesis Analytics AWS Lambda Amazon EMR Apache Storm
  18. 18. Kinesis Firehose ストリーミングデータを Amazon S3, Amazon Redshift, Amazon ES へ 簡単に配信 2 3 1 管理不要 データストアとダイレクトに統合 シームレスにスケール アプリケーションの実装やインフラストラクチャーの管理を一切行わずに Amazon S3 / Amazon Redshift / Amazon ES にデータを配信可能 シンプルな設定でストリーミングデータのバッチ化・圧縮・暗号化が可能。 最短 60 秒でデータを配信 データのスループットに応じて自動的にスケール
  19. 19. Kinesis Firehose の 主要なコンセプト • 配信先に応じて「配信ストリーム」を作成 • シャードの作成やパーティションキーの指定不要 • 1 データレコードの最大サイズは 1 MB • 制限なしにスケールするよう設計 • 米国東部(バージニア北部)/米国西部(オレゴン)/欧州(アイルランド)リージョンで利用可能 KinesisFirehose エ ン ド ポ イ ン ト データ レコード データ送信側 Amazon S3 Amazon Redshift Amazon ES Amazon S3 配信ストリーム Amazon Redshift 配信ストリーム Amazon ES 配信ストリーム
  20. 20. Kinesis Analytics ストリーミングデータを標準的な SQL クエリーでリアルタイムに分析 2 3 1 標準 SQL リアルタイム分析アプリケーション 弾力的にスケール 複雑な処理フレームワークやプログラミング言語の学習不要 秒以下のレイテンシーでストリーミングデータを連続的に分析 データのスループットに応じて処理能力を伸縮。オペレーションの介入不要
  21. 21. Kinesis Analytics の 主要なコンセプト • 分析単位に「アプリケーション」を作成し、入力/出力となる「ストリーミングソース/デスティネーション」を設定 • ストリーミングソース/デスティネーションはアプリケーション内部の「入力/出力ストリーム」に対応 • SQL でアプリケーション内部の入力ストリームを分析し、結果を出力ストリームへ出力 • アプリケーション内部ストリームの最大行サイズは 50 KB/参照データソースの最大サイズは 1 GB • クエリーの複雑さとデータのスループットに応じて処理能力 (KPU – Kinesis Processing Units) を自動伸縮 • 米国東部(バージニア北部)/米国西部(オレゴン)/欧州(アイルランド)リージョンで利用可能 SQL アプリケーション内部 入力ストリーム アプリケーション内部 出力ストリーム ストリーミング ソース (Kinesis Streams または Kinesis Firehose) ストリーミング デスティネーション (Kinesis Streams または Kinesis Firehose) 参照テーブル 参照データソース アプリケーション内部 エラーストリーム アプリケーション
  22. 22. Amazon Kinesis Analytics
  23. 23. アプリケーションを作成
  24. 24. アプリケーション名と 説明を入力
  25. 25. ストリーミングソースを 設定
  26. 26. 既存ストリーミングソースを 選択/新規作成
  27. 27. 行のスキーマを自動判定
  28. 28. スキーマの手動設定も可能
  29. 29. 分析用の SQL を記述
  30. 30. 内部(入力)ストリームの プレビューを表示
  31. 31. 内部(出力)ストリームの プレビューを表示
  32. 32. ストリーミングデスティ ネーションを設定
  33. 33. 既存ストリーミングデスティ ネーションを選択/新規作成
  34. 34. 内部(出力)ストリームとの 対応と出力フォーマットを設定
  35. 35. アプリケーション内部ストリームと ポンプ CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), sector VARCHAR(12), change REAL, price REAL); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM“ SELECT STREAM ticker_symbol, sector, change, price FROM "SOURCE_SQL_STREAM_001“; SQL 内部(入力)ストリーム 内部(出力)ストリームポンプ “SOURCE_SQL_STREAM_001” “STREAM_PUMP” “DESTINATION_SQL_STREAM”
  36. 36. 様々な タイムスタンプ CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM“ SELECT STREAM your_own_event_time_column, approximate_arrival_time, rowtime FROM "SOURCE_SQL_STREAM_001"; イベント時刻 処理時刻収集時刻 your_own_event_time_column approximate_arrival_time rowtime
  37. 37. ウィンドウ 問い合わせ タンブリング ウィンドウ スライディング ウィンドウ …FROM "SOURCE_SQL_STREAM_001" GROUP BY ticker_symbol, FLOOR("SOURCE_SQL_STREAM_001".rowtime TO MINUTE); …FROM "SOURCE_SQL_STREAM_001" WINDOW last_hour AS (PARTITION BY ticker_symbol RANGE INTERVAL '1' HOUR PRECEDING), last_two_rows AS (PARTITION BY ticker_symbol ROWS 2 PRECEDING);
  38. 38. 前処理の例 フィルタリング • 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言 • ポンプ "STREAM_PUMP" を宣言 • sector カラムの値が '%TECH%' に正規表現マッチする行のみを抽出 CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), sector VARCHAR(12), change REAL, price REAL); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM“ SELECT STREAM ticker_symbol, sector, change, price FROM "SOURCE_SQL_STREAM_001" WHERE sector SIMILAR TO '%TECH%';
  39. 39. 前処理の例 文字列操作 • 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言 • ポンプ "MY_PUMP" を宣言 • referrer カラムの値から SUBSTRING() 関数にて単純ドメイン名の部分文字列を抽出 CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ingest_time TIMESTAMP, referrer VARCHAR(32)); CREATE OR REPLACE PUMP "MY_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM "APPROXIMATE_ARRIVAL_TIME", SUBSTRING(referrer, 12, ( POSITION('.com' IN referrer) - POSITION('www.' IN referrer) - 4)) FROM "SOURCE_SQL_STREAM_001";
  40. 40. 前処理の例 参照テーブルの結合 • (参照テーブル "CompanyName" をアプリケーションに事前追加) • 内部(出力)ストリーム "DESTINATION_SQL_STREAM"/ポンプ "STREAM_PUMP" を宣言 • 内部(入力)ストリーム "SOURCE_SQL_STREAM_001" に参照テーブルを外部結合 • ティッカーシンボルが一致した場合に参照テーブルから "Company" カラムの値を出力 CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), company VARCHAR(20), sector VARCHAR(12), change DOUBLE, price DOUBLE); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM ticker_symbol, c."Company", sector, change, price FROM "SOURCE_SQL_STREAM_001" LEFT JOIN "CompanyName" c ON "SOURCE_SQL_STREAM_001".ticker_symbol = c."Ticker";
  41. 41. 基本的な分析の例 トップ K アイテムの算出 • 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言 • ポンプ "STREAM_PUMP" を宣言 • TOP_K_ITEMS_TUMBLING() 関数へ "SOURCE_SQL_STREAM_001" へのカーソルを設定 • トップ 10 の ‘ticker_symbol’ を 60 秒のタンブリングウィンドウから算出し、テーブルへ変換 CREATE OR REPLACE STREAM “DESTINATION_SQL_STREAM” ( item VARCHAR(1024), item_count DOUBLE); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM * FROM TABLE(TOP_K_ITEMS_TUMBLING( CURSOR(SELECT STREAM * FROM "SOURCE_SQL_STREAM_001"), 'ticker_symbol', 10, 60));
  42. 42. 基本的な分析の例 アイテム数のカウント • 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言 • ポンプ "STREAM_PUMP" を宣言 • COUNT_DISTINCT_ITEMS_TUMBLING() 関数へ "SOURCE_SQL_STREAM_001" へのカーソルを設定 • 出現した ‘ticker_symbol’ の種類を 60 秒のタンブリングウィンドウからカウントし、テーブルへ変換 CREATE OR REPLACE STREAM “DESTINATION_SQL_STREAM” ( number_of_distinct_items BIGINT); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM“ SELECT STREAM * FROM TABLE(COUNT_DISTINCT_ITEMS_TUMBLING( CURSOR(SELECT STREAM * FROM "SOURCE_SQL_STREAM_001"), 'ticker_symbol', 60));
  43. 43. 基本的な分析の例 シンプルなアラート • 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言 • ポンプ "STREAM_PUMP" を宣言 • 10 秒のスライディングウィンドウから ticker_symbol ごとに変化量の平均値を算出 • 変化量の平均値の絶対値が 1 を超える行のみを抽出 CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), avg_change DOUBLE); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM“ SELECT STREAM ticker_symbol, avg_change FROM ( SELECT STREAM ticker_symbol, AVG(change) OVER w1 AS avg_change FROM "SOURCE_SQL_STREAM_001“ WINDOW w1 AS (PARTITION BY ticker_symbol RANGE INTERVAL '10' SECOND PRECEDING)) WHERE ABS(avg_change) > 1;
  44. 44. 応用的な分析の例 アノマリーディテクション(異常検出) • 内部(出力)ストリーム “TEMP_SQL_STREAM“ および "DESTINATION_SQL_STREAM" を宣言 • ポンプ “STREAM_PUMP” および “OUTPUT_PUMP” を宣言 • RANDOM_CUT_FOREST() 関数にて変化量と価格からアノマリースコアを算出 • 1 秒のタンブリングウィンドウで行をアノマリースコアの降順にソート CREATE OR REPLACE STREAM "TEMP_STREAM" ( ticker_symbol VARCHAR(4), change DOUBLE, price DOUBLE, anomaly_score DOUBLE); CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), change DOUBLE, price DOUBLE, anomaly_score DOUBLE); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "TEMP_STREAM“ SELECT STREAM ticker_symbol, c, p, anomaly_score FROM TABLE(RANDOM_CUT_FOREST(CURSOR( SELECT STREAM ticker_symbol, CAST(change AS DOUBLE) AS c, CAST(price AS DOUBLE) AS p FROM "SOURCE_SQL_STREAM_001"))); CREATE OR REPLACE PUMP "OUTPUT_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM“ SELECT STREAM * FROM "TEMP_STREAM“ ORDER BY FLOOR("TEMP_STREAM".rowtime TO SECOND), anomaly_score DESC;
  45. 45. 代表的な 制限事項 • 米国東部(バージニア北部)/米国西部(オレゴン)/欧州(アイルランド) リージョンで利用可能 • アプリケーション内部ストリームの最大行サイズは 50 KB • 参照データソースの最大サイズは 1 GB • リージョンあたりの最大アプリケーション数は 5(上限緩和可能) • アプリケーションあたりのストリーミングソースの最大数は 1 • アプリケーションあたりのストリーミングデスティネーションの最大数は 4 • アプリケーションあたりの参照データソースの最大数は 1 • アプリケーションあたりのストリーミングソースの最大並列数は 10 • アプリケーションあたりの最大 KPU 数は 8(1 KPU は 1 vCPU および 4 GB メモリー) • Kinesis Producer Library によって生成されたレコードは未サポート
  46. 46. 参考 ドキュメント • Amazon Kinesis Analytics – https://aws.amazon.com/jp/kinesis/analytics/ • Amazon Kinesis Analytics Developer Guide – http://docs.aws.amazon.com/kinesisanalytics/latest/dev/what-is.html • Amazon Kinesis Analytics SQL Reference – http://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/analytics-sql- reference.html • Real-time Clickstream Anomaly Detection with Amazon Kinesis Analytics (AWS Big Data Blog) – https://blogs.aws.amazon.com/bigdata/post/Tx1XNQPQ2ARGT81/Real-time- Clickstream-Anomaly-Detection-with-Amazon-Kinesis-Analytics • Robust Random Cut Forest Based Anomaly Detection On Streams – http://jmlr.org/proceedings/papers/v48/guha16.pdf

×