クックブックの例

GitHub のクックブックの例のディレクトリ(master-1.x ブランチ)にはサンプル パイプラインが数多く用意されています。これらのパイプラインには、SDK のクラスを使用して一般的なデータ処理の設計パターンを実装する方法が示されています。このドキュメントでは、それぞれの例について簡単に説明し、ソースコードへのリンクを示します。

サンプル シナリオを使用して一般的なエンドツーエンドのパイプラインのパターンを示す完全な例のリストについては、エンドツーエンドの例をご覧ください。

重要なキーワード

このドキュメントでは、以下の用語を使用します。

  • パイプライン - パイプラインは、データ処理ジョブを表すために作成するコードです。Dataflow はパイプラインのコードを取得し、それを使用してジョブを構築します。
  • PCollection - PCollection は Dataflow SDK によって提供される特殊クラスのことで、実質的に任意のサイズの型指定されたデータセットを表します。
  • 変換 - Dataflow パイプラインで、変換はステップ(データを変換する処理オペレーション)を表します。

BigQueryTornadoes

BigQueryTornadoes パイプラインは、BigQuery から気象データの公開サンプルを読み取り、月ごとに発生する竜巻の数をカウントします。

このパイプラインは、表から行を取り出し、カウントの表を生成するユーザー定義変換を適用します。この例のユーザー定義変換は複数の変換で構成され、そのうちの 1 つは SDK で定義されている Count 変換です。ここでは、Count を使用して月ごとに観測された竜巻の総数をカウントします。このパイプラインは、最終結果を BigQuery に書き込みます。

CombinePerKeyExamples

パイプラインのデータに含まれる値を結合することが必要な場合がよくあります。Dataflow SDK には、パイプラインの PCollection オブジェクト内の値をマージするために使用できる Combine 変換が数多く用意されています。たとえば、Combine.perKey はタプルのコレクションをキーごとにグループ化し、そのキーを共有するすべての値の結合を実行します。事前に定義された結合関数のいずれか、または独自のカスタム結合関数Combine.perKey に渡すことにより、値を結合できます。

CombinePerKeyExamples は、Google BigQuery からシェイクスピアの一連の戯曲を読み取り、そのデータセット内の所定の長さを超える単語ごとに、その単語が出現する戯曲名のリストを含む文字列を生成します。具体的には、キーでグループ化されたコレクション内の値を結合する方法を示しています。Combine.perKey を使用して、長さの要件を満たす各単語が出現する戯曲名のリストを含む文字列を生成します。これは、すべての入力項目のカンマ区切り文字列を作成する(ユーザー定義の)結合関数を使用して行われます。つまり、キーと値の両方が文字列である Key-Value ペアのコレクションに対して、この関数はすべての文字列の値を同じキーでグループ化して連結し、1 つの文字列を作成します。

CombinePerKeyExamples には、パイプラインのデータ内の値を結合することに加えて、Aggregators の使用方法も示されています。 Aggregators は、Dataflow Monitoring UI に表示する特定の情報を追跡するために使用されます。CombinePerKeyExamples パイプラインでは、Aggregator を使用して所定の長さよりも短い(したがって、最終的な結果に含まれない)単語の数が追跡されます。

MaxPerKeyExamples

MaxPerKeyExamples は、Combine 変換と CombineFn の使用方法、特に Dataflow SDK for Java に含まれている統計的結合関数の使用方法が示しています。

MaxPerKeyExamples サンプルは、BigQuery から気象データの公開サンプルを読み取り、Max 関数を使用して月ごとの最高気温を検出します。

DatastoreWordCount

DatastoreWordCount サンプルは、DatastoreIO を使用してスキーマレスな NoSQL データベースである Cloud Datastore を読み取ったり書き込んだりする方法を示しています。

DatastoreWordCount は 2 つの例で構成されています。最初の例である writeDataToDatastore は、テキスト ファイルから入力を読み取るパイプラインを作成し、そこから DatastoreIO に入力します。2 つ目の例である readDataFromDatastore は、DatastoreIO.Read を実行するパイプラインを作成してシェイクスピアの戯曲を読み取り、各単語が戯曲に出現する回数をカウントし、その結果をテキスト ファイルに書き込みます。

DeDupExample

DeDupExample は、データセットから重複するレコードを削除する方法を示しています。この例で、パイプラインの入力は書式なしテキスト ファイルである一連のシェイクスピアの戯曲です。

この例は、SDK によって提供される RemoveDuplicates 変換を使用して重複するレコード(この場合はテキスト行)を削除する方法を示しています。

FilterExamples

FilterExamples は、さまざまなフィルタリング方法を示しています。たとえばその 1 つが、テーブルに含まれるすべての列のセットから必要なサブセットを抽出する、リレーショナル データベースの意味での射影です。もう 1 つのフィルタリングのクラスは、なんらかの条件が真(静的に定義された値、パイプラインの作成時に定義されたパラメータまたはパイプライン自体によって算出された値)であるかどうかに基づいて要素のコレクションを出力するケースです。

FilterExamples パイプラインは、BigQuery からの気象データの公開サンプルを読み取ります。データに対する射影を行い、気温計測値の全球平均を算出し、特定の 1 か月の計測値をフィルタして、算出された全球平均より低い平均気温を含む(その月の)データのみを出力します。

これは、多くの場合、パイプライン自体によって算出された値に基づいてフィルタ条件を作成するときに便利です。算出された値は、副入力として使用できます。FilterExamples は、副入力をフィルタする方法を示しています。この例には、気象データを読み取り、各要素から気温の値のみを抽出し、そのコレクションを全球平均を算出するための入力として使用する複合変換が含まれています。その算出結果を使用してコレクションがフィルタされ、全球平均より低い気温を含む要素のみが出力されます。

JoinExamples

JoinExamples は、Dataflow の CoGroupByKey 変換を使用してデータセット間のリレーショナル結合を実施する方法を示しています。CoGroupByKey は、共通のキーを共有する複数の PCollections の値を結合できます。

JoinExamples は、2 つの BigQuery テーブルのサンプルデータを使用します。1 つは現在のイベントが国コードによってインデックス登録されたテーブル、もう 1 つは国コードが国名にマッピングされたテーブルです。この例は、country code キーを使用して 2 つのテーブルのデータを結合する方法を示しています。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。