2016-08-19 12 views
5

私はSparkでDataFramesを操作するとき、DataFrameの特定の列の値だけを編集する必要があることがあります。たとえば。私のデータフレームにcountフィールドがあり、countのすべての値に1を追加したい場合は、DataFramesの機能を使用してジョブを実行するカスタムudfを書くか、map結果のRDDから別のDataFrameを抽出します。マップとudfの相違点

私が知りたいのは、udfが実際にどのようにフードの下で動作するかです。この場合、map/udfを使って比較してください。パフォーマンスの違いは何ですか?

ありがとうございます!

+1

http://stackoverflow.com/q/38860808/1560062 – zero323

答えて

1

mapは、udfよりも柔軟です。 mapでは、行内で操作できる列の数に制限はありません。データの5列の値を導出し、3列を削除したいとします。 withColumn/udfを5回実行し、次にselectを実行する必要があります。 1 mapの機能では、このすべてを行うことができます。

+0

1つの列しか処理していない場合は、 'map'より' withColumn'/'udf'を使用する方が効率的ですか? – spiffman

+0

一般的に、RDDからデータフレームを作成するにはオーバーヘッドがあるので、 'withColumn' /' udf'がより効率的でなければなりません。詳細については、zero323の回答が役に立ちます。http://stackoverflow.com/q/38860808/1560062 – David