Warning

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

トランスフォームとパイプライン

すべての変換は、現在、デフォルトでトランザクションタイプ SNAPSHOT になっています。

Transform とは、データセットを計算する方法の説明です。以下を説明しています。

  • 入力データセットと出力データセット
  • 入力データセットを出力データセットに変換するために使用されるコード(これを計算関数と呼びます)
  • 追加の設定(ランタイムで使用するカスタム Transforms プロファイルなど)

入力データセットと出力データセット、および変換コードは、Transform オブジェクトに指定され、次に Pipeline に登録されます。Transform を定義する方法は、以下の2つの要素によって異なります。

Transform のタイプ

Tip

データ変換は、DataFrame オブジェクトとファイルの両方を用いて表現することができます。これらの DataFrame オブジェクトは、通常の Spark DataFrames を指します。Spark Scala/Java API では、DataFrameDataset によって表現されます。したがって、ユーザーは、データ変換コードで Dataset オブジェクトを直接操作します。 Spark の操作に関する詳細は、オンラインで利用可能な Java API for Spark documentation ↗ を参照してください。

DataFrame オブジェクトに依存する変換の場合、以下を行うことができます。

  • Dataset<Row> タイプの入力と出力をサポートする高レベルの Transform を定義する
  • 低レベルの Transform を定義し、入力データセットを含む Dataset<Row> にアクセスする方法を明示的に呼び出す

ファイルに依存する変換の場合、低レベルの Transform を定義し、データセット内のファイルにアクセスする必要があります。

2種類の Transform の主な違いを以下に示します。

説明高レベル Transform低レベル Transform
DataFrame オブジェクトに依存するデータ変換が可能✓ *
ファイルへのアクセスに依存するデータ変換が可能
複数の入力データセットをサポート
複数の出力データセットをサポート
計算関数は DataFrame 値を返す必要がある
計算関数は、値を返す代わりに出力に書き込む

* DataFrame オブジェクトに依存するデータ変換には、高レベルの Transform を使用することをお勧めします。

両方の Transform タイプでは、計算関数を含むクラスを作成する必要があります。このクラス内で、計算関数は、@Compute で注釈されたパブリックで非スタティックなメソッドでなければなりません。この注釈がないと、データ変換コードが正しく登録されません。

登録タイプ

リポジトリ内の各 Transforms Java サブプロジェクトは、単一の Pipeline オブジェクトを公開します。この Pipeline オブジェクトは、次の目的で使用されます。

  1. Foundry でデータセットを登録し、それらを構築する方法を指示する
  2. Foundry ビルド中に、特定のデータセットを構築するための Transform オブジェクトを検索して実行する

エントリーポイント

Java 変換を実行するためのランタイムは、プロジェクトの Pipeline を見つけることができる必要があります。Transforms Java は、標準の Java 施設であるサービスローディング ↗ を使用しています。

プロジェクトに関連付けられた Pipeline オブジェクトを定義するには、PipelineDefiner オブジェクトを実装する必要があります。この PipelineDefiner オブジェクトでは、プロジェクトの Pipeline に Transform を追加できます。具体的には、各 Java サブプロジェクトが単一の PipelineDefiner オブジェクトを実装することが必要です。