/ / Dataset Apache Sparkでの変換の適用 - java、apache-spark、spark-dataframe

データセットApache Sparkでの変換の適用 - java、apache-spark、spark-dataframe

私は Dataset<Row>Apache SparkではJavaを使用しています。このデータセットのすべての列に対する数学的変換のカップルです。基本的に変換の1つは、このデータセットに格納されているすべての値のログを取得し、 Dataset<Row>。私は明らかにそれを行う方法を参照してください map RDDの機能ですが、どうすれば Dataset<Row>

コンテキスト: Dataset<Row> old 2つの列を含む a そして b。私は新しい Dataset<Row> new 両方の列で a = log(a) そして b = log(b)

回答:

回答№1は1

あなたは、パラメータとしてa [column]とb [column]の型の値をとり、ログ値を返すメソッドを作成することができます。

列aと列bがlong型であるとします

public long getLog(long value){
// yourlogic to generate log
}

データセット上にマップ関数を適用します。マップ関数の下では、型として値を取得します Row 適用 getLong/getAs() メソッドを呼び出して対応する値を取得し、この値をカスタムログ計算メソッドに渡します。 getLog 私たちの場合、結果の値を返します。

あなたが戻ってくる必要があるかもしれない Tuple2 値aとbの両方の列

または作成することができます udf ユーザがspqrk sqlの関数を定義してから適用する withcoumn 適用する方法 udf

注意 udfは引数としてa [列]とb [列]の値をとり、ログ値を返します。

この仕事はうまくいきたい