全般
インタラクティブな分析により、リアルタイムでストリーミングデータを探索することができます。アドホックなクエリまたはプログラムを使用すると、Amazon MSK または Amazon Kinesis Data Streams からのストリームを検査し、それらのストリーム内のデータがどのように見えるかを可視化することができます。例えば、時間枠の平均を計算するリアルタイムメトリクスがどのように動作するかを表示し、選択した送信先に集計データを送信できます。また、インタラクティブな分析は、ストリーム処理アプリケーションの反復開発にも役立ちます。作成したクエリは、新しいデータが到着すると継続的に更新されます。Kinesis Data Analytics Studio を使用すると、これらのクエリをデプロイし、自動スケーリングと永続的な状態のバックアップを有効にして継続的に実行することができます。
Apache Beam を使用して Kinesis Data Analytics アプリケーションを作成することは、Apache Flink を使い始めるのと非常によく似ています。上記の質問の指示に従い、デベロッパーガイドの指示に従って、アプリケーションを Apache Beam で実行するために必要なコンポーネントを必ずインストールしてください。Kinesis Data Analytics は、Apache Beam で実行している場合にのみ Java SDK をサポートすることに注意してください。
Amazon Kinesis Data Analytics コンソールから開始して、新しい Studio ノートブックを作成できます。ノートブックを起動すると、Apache Zeppelin で開いて、すぐに SQL、Python、Scala でコードを書くことができます。組み込みの統合を使用する Amazon Kinesis Data Streams、Amazon MSK、Amazon S3 のノートブックインターフェイス、およびカスタムコネクタを備えたその他のさまざまなソースを使用して、インタラクティブにアプリケーションを開発できます。Apache Flink が Flink SQL でサポートするすべての演算子と Table API を使用して、アドホックデータストリームのクエリを実行し、ストリーム処理アプリケーションを開発できます。準備が整うと、数回クリックするだけで、コードを自動スケーリングと永続的な状態で継続的に実行されるストリーム処理アプリケーションに簡単にプロモートできます。
はい、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 ワークロードと統合できます。詳細をご確認の上で使用を開始していただくには、スキーマレジストリの ユーザードキュメントをご覧ください。
主要な概念
アプリケーションの管理
- Amazon Kinesis Data Analytics for Apache Flink デベロッパーガイドの「Kinesis Data Analytics のモニタリング」
- Amazon Kinesis Data Analytics for Studio デベロッパーガイドの「Kinesis Data Analytics のモニタリング」
- Amazon Kinesis Data Analytics for SQL デベロッパーガイドの「Kinesis Data Analytics のモニタリング」
- Amazon Kinesis Data Analytics for Apache Flink デベロッパーガイドの「アクセス許可の付与」
- Amazon Kinesis Data Analytics Studio デベロッパーガイドの「アクセス許可の付与」
- Amazon Kinesis Data Analytics for SQL デベロッパーガイドの「アクセス許可の付与」
料金と請求
ストリーミングアプリケーションの実行に使用された KPU (Amazon Kinesis Processing Unit) の数に基づいて時間あたりの課金が発生します。KPU とは、1 vCPU のコンピューティングと 4 GB のメモリで構成されるストリーム処理能力の単位です。Amazon Kinesis Data Analytics では、メモリやコンピューティングの要求が処理の複雑性や処理されたストリーミングデータのスループットに合わせて変わるとき、ストリーム処理アプリケーションによって必要とされる KPU の数が自動的に拡大縮小されます。
Apache Flink と Apache Beam のアプリケーションの場合、アプリケーションのオーケストレーションに使用した KPU が、アプリケーションあたり 1 単位追加される方式で課金されます。Apache Flink と Apache Beam のアプリケーションは、稼働アプリケーションストレージと永続的アプリケーションバックアップに対しても課金されます。稼働アプリケーションストレージは Amazon Kinesis Data Analytics のステートフル処理機能のために使用され、GB 単位で毎月課金されます。永続的アプリケーションバックアップは任意です。これは、アプリケーションバックアップにポイントインタイムリカバリを提供するもので、GB 単位で毎月課金されます。
開発モードまたはインタラクティブモードの Amazon Kinesis Data Analytics Studio の場合、アプリケーションオーケストレーション用の追加の KPU とインタラクティブな開発用の 1 つの追加の KPU について課金されます。アプリケーション ストレージの実行にも課金されます。耐久性のあるアプリケーションのバックアップには課金されません。
Apache Flink アプリケーションの構築
Apache Flink を使用するアプリケーションのアプリケーションコードの作成
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"));
- ストリーミングデータソース: Amazon Managed Streaming for Apache Kafka (Amazon MSK)、Amazon Kinesis Data Streams Destinations、またはシンク: 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 アプリケーションを使用して、Amazon Kinesis Data Streams、Amazon MSK、および他のシステム間でデータを複製できます。ドキュメントに記載されている 例は、ある Amazon MSK トピックから読み取りを行う方法、別のトピックに書き込む方法を示しています。
Amazon Kinesis Data Analytics Studio アプリケーションの構築
Q: Studio アプリケーションの開発方法は?
数回クリックするだけで Amazon Kinesis Data Analytics Studio、Amazon Kinesis Data Streams、または Amazon MSK コンソールから開始してサーバーレスノートブックを起動し、データストリームをすぐにクエリしてインタラクティブなデータ分析を実行することができます。
インタラクティブなデータ分析: SQL、Python、Scala でノートブックにコードを記述し、ストリーミングデータを操作することができます。クエリの応答時間は秒単位です。組み込みの可視化を使用して、ノートブック内からデータを探索し、ストリーミング データに関するリアルタイムインサイトを表示し、Apache Flink を利用したストリーム処理アプリケーションを簡単に開発できます。
コードを本番アプリケーションとして実行する準備ができたら、ワンクリックで、サーバーなしで 1 秒あたり数 GB のデータを処理するストリーム処理アプリケーションに移行できます。
ストリーム処理アプリケーション: コードを本番環境にプロモートする準備ができたら、クリックしてコードをビルドできます。ノートブック インターフェイスで [Deploy as stream processing application (ストリーム処理アプリケーションとしてデプロイ)] をクリックするか、CLI で単一のコマンドを発行すると、Studio は、自動スケーリングと永続的な状態を有効にしてストリーム処理アプリケーションを大規模に実行するために必要なすべてのインフラストラクチャ管理を行います。Apache Flink アプリケーションでの Amazon Kinesis Data Analytics の場合と同様です。
Q: アプリケーションコードの概要を教えてください。
Apache Flink の Table API を使用して、SQL、Python、Scala などの任意の言語により、ノートブックでコードを記述できます。Table API は、SQL の機能のスーパーセットをサポートする高レベルの抽象化およびリレーショナル API です。選択、フィルター、結合、グループ化、集計などの使い慣れた操作や、ウィンドウ処理などのストリーム固有の概念を提供します。%<interpreter> を使用して、ノートブックのセクションで使用する言語を指定することで、言語を簡単に切り替えることができます。インタープリターは、デベロッパーがノートブックの各セクションに言語またはデータ処理エンジンを指定できるようにする Apache Zeppelin プラグインです。また、ユーザー定義関数を作成し、それらを参照してコード機能を改善することもできます。
Q: どのような SQL 操作がサポートされていますか?
スキャンとフィルター (SELECT、WHERE)、集計 (GROUP BY、GROUP BY WINDOW、HAVING)、セット (UNION、UNIONALL、INTERSECT、IN、EXISTS)、順序 (ORDER BY、LIMIT)、結合 (INNER、OUTER、時限ウィンドウ –BETWEEN、AND、一次的テーブルとの結合 – 時間の経過に伴う変化を追跡するテーブル)、Top N、重複排除、パターン認識などの SQL 操作を実行できます。GROUP BY、OUTER JOIN、Top N などの一部のクエリは、ストリーミングデータの「結果の更新」です。つまり、ストリーミングデータが処理されると、結果が継続的に更新されます。CREATE、ALTER、DROP などの他の DDL ステートメントもサポートされています。クエリとサンプルの完全なリストについては、https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/sql/queries.html を参照してください。
Q: Python と Scala はどのようにサポートされていますか?
Apache Flink の Table API は、Python 文字列と Scala 式を使用した言語統合を通じて、Python と Scala をサポートしています。サポートされている操作は、選択、順序、グループ化、結合、フィルター、ウィンドウ処理など、サポートされている SQL 操作と非常に似ています。 操作の完全なリストとサンプルは、こちらのドキュメントに含まれています。
Q: どのバージョンの Apache Flink および Apache Zeppelin をサポートしていますか?
サポートされている Apache Flink のバージョンの詳細については、Amazon Kinesis Data Analytics のリリースノートページを参照してください。このページには、Kinesis Data Analytics がサポートする Apache Zeppelin、Apache Beam、Java、Python、および AWS SDK のバージョンも記載されています。
Q: 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
Q: カスタム統合はサポートされていますか?
いくつかの追加の手順と Apache Flink コード (Python、Scala、Java) の行を使用して追加の統合を設定することで、Amazon OpenSearch Service、Amazon ElastiCache for Redis、Amazon Aurora、Amazon Redshift、Amazon DynamoDB、Amazon Keyspaces などの統合先を含め、Apache Flink がサポートするすべての統合との接続を定義できます。Studio アプリケーションを作成または設定するときに、これらのカスタムコネクタの実行可能ファイルをアタッチすることができます。
Q: Kinesis Data Analytics Studio または Kinesis Data Analytics SQL を使用して開発する必要がありますか?
1 回限りの処理でより包括的なストリーム処理エクスペリエンスを提供するため、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 ではなく、新しい Kinesis Data Analytics Studio を使用することをお勧めします。Kinesis Data Analytics Studio は使いやすさと高度な分析機能を組み合わせており、洗練されたストリーム処理アプリケーションでも数分で構築できます。
SQL アプリケーション入力の設定
SQL アプリケーション用アプリケーションコードの作成
- INSERT ステートメントのコンテキストでは必ず SELECT ステートメントを使用してください。行を選択した場合の結果は、別のアプリケーション内ストリームに挿入します。
- ポンプのコンテキストでは INSERT ステートメントを使用してください。
- ポンプは、INSERT ステートメントを絶えず実行されるようにしてアプリケーション内ストリームへの書き込みを行うために使用できます。
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";
SQL アプリケーションで出力先を設定する
他のストリーム処理ソリューションとの比較
サービスレベルアグリーメント (SLA)
Q: Amazon Kinesis Data Analytics SLA では何が保証されますか?
Amazon Kinesis Data Analytics SLA では、Amazon Kinesis Data Analytics について少なくとも 99.9% の月間稼働率が保証されます。
Q: SLA サービスクレジットの資格を有しているかどうかは、どうすればわかりますか?
同じリージョン内の複数のアベイラビリティーゾーンでタスクを実行しており、任意の月間課金期間中に月間稼働率が 99.9% 未満であった場合、Amazon Kinesis Data Analytics SLA に基づいて Amazon Kinesis Data Analytics に対する SLA クレジットを受け取る資格があります。SLA の利用規約に関するすべての詳細、およびクレジット請求方法の詳細については、Amazon Kinesis SLA の詳細ページを参照してください。