2017-01-04 11 views
1

Apache SparkでJavaを使用してDataset<Row>を処理しています。このデータセットのすべての列に対して数学的変換を行う必要があります。基本的には、このデータセットに格納されているすべての値のログを取得し、まだDataset<Row>を返すことです。 RDDのmap機能でこれを行う方法を明確に見ていますが、Dataset<Row>でどうすればいいですか?データセットに変換を適用するApache Spark

コンテキスト:Dataset<Row> oldには、2列のabが含まれています。私はあなたが何ができるか、両方の列a = log(a)b = log(b)

+1

この作品は罰金

ホープなど、あなたがこれまでに何をしたか、何をしようとする、より詳細に説明してくださいデータセットを使用することができ、多くの機能を持っています。 –

答えて

1

で新しいDataset<Row> newを返すようにすると、あなたは、パラメータとして型の値[コラム]とB [コラム]を取るメソッドを作成し、ログの値を返すことができているしたいです。

仮定する列AとB列は型である長い

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

その後、データセット上のマップ機能を適用します。マップ関数の下でタイプとして適用getLong/getAs()メソッドを使用して対応する値を取得し、この値を独自のログ計算メソッドに渡します。つまり、getLogの場合は結果値を返します。

udf

NOTEを適用するために、その後withcoumn法を適用spqrkのSQLの関数を定義するには、両方の値aとbの列

ためTuple2を返す必要がありますまたはあなたがudfユーザーを作成することができます値をとります UDF a [column]とb [column]を引数にとり、ログ値を返します。

関連する問題