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

Spark プロファイルを適用する

トランスフォームのジョブにカスタム Spark プロパティを適用したい場合があります。

特定のジョブに Spark プロパティを適用するには、次の手順に従います。

  1. リポジトリーへの Spark プロファイルのインポートに関するガイドに沿って進めます。
  2. 以下の説明に従って、コード内でトランスフォームプロファイルを参照します。

利用可能なデフォルトの Spark プロファイルの特性については、Spark プロファイルリファレンスセクションで詳しく確認できます。

Spark プロファイルの調整に関する推奨ベストプラクティスも確認してください。

トランスフォームプロファイルの構文

カスタム Spark プロファイルの指定は、すべての言語でサポートされています。以下のすべてのケースで、設定は左から右に評価されます。複数のプロファイルで同じ設定を指定した場合、リストの末尾に近いプロファイルの設定が優先されます。

Python

Python コードでは、configure デコレーターでトランスフォームオブジェクトをラップすることで、profile1 および profile2 プロファイルを参照できます。このデコレーターは、カスタムトランスフォームプロファイルのリストを参照する profile パラメーターを受け取ります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 from transforms.api import transform, Input, Output @transform.spark.using( # 入力データセット my_input=Input("/path/to/input/dataset"), # 出力データセット my_output=Output("/path/to/output/dataset"), ).with_config(profiles=['profile1', 'profile2']) # データ変換コード def my_compute_function(my_input, my_output): return my_output.write_dataframe(my_input.dataframe())

Java

自動登録されたトランスフォームでは、Java コードの compute 関数で TransformProfiles 注釈を使用することで、profile1 および profile2 プロファイルを参照できます。この注釈は、カスタム Spark プロファイルの配列を参照するパラメーターを受け取ります。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import com.palantir.transforms.lang.java.api.TransformProfiles; /** * これは、自動登録を目的とした低レベルのトランスフォームの例です。 */ public final class LowLevel { @Compute @TransformProfiles({ "profile1", "profile2" }) public void myComputeFunction( @Input("/path/to/input/dataset") FoundryInput myInput, @Output("/path/to/output/dataset") FoundryOutput myOutput) { Dataset<Row> limited = myInput.asDataFrame().read().limit(10); myOutput.getDataFrameWriter(limited).write(); } }

また、手動登録を使用している場合は、builder の transformProfiles() メソッドを使用できます。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public final class MyPipelineDefiner implements PipelineDefiner { @Override public void define(Pipeline pipeline) { LowLevelTransform lowLevelManualTransform = LowLevelTransform.builder() .transformProfiles(ImmutableList.of("profile1", "profile2")) // 使用する計算関数を渡します。ここで、「LowLevelManualFunction」は、 // 低レベルのトランスフォームの計算関数のクラス名に対応します。 .computeFunctionInstance(new LowLevelManualFunction()) .putParameterToInputAlias("myInput", "/path/to/input/dataset") .putParameterToOutputAlias("myOutput", "/path/to/output/dataset") .build(); pipeline.register(lowLevelManualTransform); } }

SQL

SQL コードでは、テーブルの foundry_transform_profiles プロパティを設定することで、profile1 および profile2 プロファイルを参照できます。

Copied!
1 2 CREATE TABLE `/path/to/output` TBLPROPERTIES (foundry_transform_profiles = 'profile1, profile2') AS SELECT * FROM `/path/to/input`

別の SQL 構文を使用した例を示します。

Copied!
1 2 CREATE TABLE `/path/to/output` USING foo_bar OPTIONS (foundry_transform_profiles = 'profile1, profile2') AS SELECT * FROM `/path/to/input`;

ANSI SQL モードでは、カスタムトランスフォームプロファイルの指定は現在サポートされていません。