注: 以下の翻訳の正確性は検証されていません。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
オブジェクトを実装することが必要です。