注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
すべての変換は、現在、デフォルトでトランザクションタイプ SNAPSHOT になっています。
Transform とは、データセットを計算する方法の説明です。以下を説明しています。
入力データセットと出力データセット、および変換コードは、Transform オブジェクトに指定され、次に Pipeline に登録されます。Transform を定義する方法は、以下の2つの要素によって異なります。
データ変換は、DataFrame オブジェクトとファイルの両方を用いて表現することができます。これらの DataFrame オブジェクトは、通常の Spark DataFrames を指します。Spark Scala/Java API では、DataFrame は Dataset によって表現されます。したがって、ユーザーは、データ変換コードで Dataset オブジェクトを直接操作します。
Spark の操作に関する詳細は、オンラインで利用可能な Java API for Spark documentation ↗ を参照してください。
DataFrame オブジェクトに依存する変換の場合、以下を行うことができます。
Dataset<Row> タイプの入力と出力をサポートする高レベルの Transform を定義するDataset<Row> にアクセスする方法を明示的に呼び出すファイルに依存する変換の場合、低レベルの Transform を定義し、データセット内のファイルにアクセスする必要があります。
2種類の Transform の主な違いを以下に示します。
| 説明 | 高レベル Transform | 低レベル Transform |
|---|---|---|
DataFrame オブジェクトに依存するデータ変換が可能 | ✓ * | ✓ |
| ファイルへのアクセスに依存するデータ変換が可能 | ✓ | |
| 複数の入力データセットをサポート | ✓ | ✓ |
| 複数の出力データセットをサポート | ✓ | |
計算関数は DataFrame 値を返す必要がある | ✓ | |
| 計算関数は、値を返す代わりに出力に書き込む | ✓ |
* DataFrame オブジェクトに依存するデータ変換には、高レベルの Transform を使用することをお勧めします。
両方の Transform タイプでは、計算関数を含むクラスを作成する必要があります。このクラス内で、計算関数は、@Compute で注釈されたパブリックで非スタティックなメソッドでなければなりません。この注釈がないと、データ変換コードが正しく登録されません。
リポジトリ内の各 Transforms Java サブプロジェクトは、単一の Pipeline オブジェクトを公開します。この Pipeline オブジェクトは、次の目的で使用されます。
Transform オブジェクトを検索して実行するJava 変換を実行するためのランタイムは、プロジェクトの Pipeline を見つけることができる必要があります。Transforms Java は、標準の Java 施設であるサービスローディング ↗ を使用しています。
プロジェクトに関連付けられた Pipeline オブジェクトを定義するには、PipelineDefiner オブジェクトを実装する必要があります。この PipelineDefiner オブジェクトでは、プロジェクトの Pipeline に Transform を追加できます。具体的には、各 Java サブプロジェクトが単一の PipelineDefiner オブジェクトを実装することが必要です。