ランタイム クラスの作成

シグネチャと GUI ノードを作成した後、ランタイムを作成します。ここで、オペレーターのアクションの大部分が発生します。ここでデータ変換を実行する Spark ジョブを定義します。

基本クラス OperatorRuntime を拡張して、出力ステップを手動で定義できます。ただし、この演習では、SparkDataFrameRuntime を使用します。このアプローチでは、データを変換する Spark ジョブを記述し、バックエンドで定義済みのメソッドセットを使用して結果をパッケージ化し、TIBCO Data Science - Team Studio アプリケーションに返します。

このクラスに MyColumnFilterRuntime という名前を付け、SparkDataFrameRuntime を拡張し、Spark ジョブ MyColumnFilterJob を型パラメータとして渡します。カラム フィルター オペレーターの場合、MyColumnFilterJob という Spark ジョブを送信します。デフォルトの Spark 設定に従って Spark ジョブを起動するデフォルトの実装を使用するには、MyColumnFilterRuntime クラスの本体にコードを追加する必要はありません。

    手順
  1. 次のコードを追加します。
    class MyColumnFilterRuntime extends SparkDataFrameRuntime[MyColumnFilterJob] {
     }
  2. 前のクラスで参照した Spark ジョブを実装します。

    1. MyColumnFilterJob というクラスを作成し、SparkDataFrameJob を拡張します。
    2. 次のように、transform() メソッドをオーバーライドして Spark コードの作成を開始します。

    class MyColumnFilterJob extends SparkDataFrameJob {
     override def transform(parameters: OperatorParameters,
             dataFrame: DataFrame,
             sparkUtils: SparkRuntimeUtils,
             listener: OperatorListener): DataFrame = {
     
             }
    }
    パラメーターは、ユーザーが設計時に選択したパラメーターから渡されます。オペレーターが実行を開始すると、パラメーター情報がランタイムに渡されます。パラメータ dataFrame は入力であり、コードが完了すると関数はデータ フレームを返す必要があります。
  3. カラム フィルター操作を実行するには、ユーザーが選択したパラメーターのリストを取得し、それらの列のみが含まれるデータ フレームを返します。

    1. 次のコマンドを使用して、ユーザーが選択した列にアクセスします。
      parameters.getTabularDatasetSelectedColumns(OperatorConstants.parameterID)
      OperatorConstants.parameterID は、Constants クラスで参照される値です。これは、OperatorDialog ステップで選択された列を指します。この呼び出しは、選択された列名のコレクションを返します。
    2. 次のコードを追加して、列名のコレクション全体に Spark の col() メソッドを適用します。

    class MyColumnFilterJob extends SparkDataFrameJob {
    
        override def transform(parameters: OperatorParameters,
                                dataFrame: DataFrame,
                                sparkUtils: SparkRuntimeUtils,
                                listener: OperatorListener): DataFrame = {
            // grab the selected column names
            val columnNamesToKeep = parameters.getTabularDatasetSelectedColumns(OperatorConstants.parameterID)._2
            // returns the columns from the DF containing the column names
            val columnsToKeep = columnNamesToKeep.map(dataFrame.col)
            // returns a data frame with only the selected columns included
            dataFrame.select(columnsToKeep: _*)
        
        }
        }

オペレーターの実行時

SparkDataFrameGUINode を使用した基本的な Spark 変換の場合、結果コンソール出力は出力テーブルのプレビューを表示するように自動的に構成されます。