私は 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 [列]の値をとり、ログ値を返します。
この仕事はうまくいきたい