私はデータフレームと一緒に関数の引数として渡すに沿ってみたいいくつかのUDFを持っているではありません。これを行うには、UDFは、関数スコープ
一つの方法は、関数内でUDFを作成するかもしれないが、それは、この問題にアプローチする最良の方法ではないかもしれないそれを再利用せずにUDFの複数のインスタンスを作成し、破壊するであろう。ここで
コードのサンプル片です -
val lkpUDF = udf{(i: Int) => if (i > 0) 1 else 0}
val df = inputDF1
.withColumn("new_col", lkpUDF(col("c1")))
val df2 = inputDF2.
.withColumn("new_col", lkpUDF(col("c1")))
の代わりに上記をやって、私は理想的にこのような何かをしたいと思いますが -
val lkpUDF = udf{(i: Int) => if (i > 0) 1 else 0}
def appendCols(df: DataFrame, lkpUDF: ?): DataFrame = {
df
.withColumn("new_col", lkpUDF(col("c1")))
}
val df = appendCols(inputDF, lkpUDF)
UDF上記ザ・は非常に単純ですが、私の場合、それは、プリミティブ型、またはユーザ定義のケースクラスの型を返すことができます。任意の思考/ポインタは非常に高く評価されるだろう。ありがとう。
import org.apache.spark.sql.UserDefinedFunction
def appendCols(df: DataFrame, func: UserDefinedFunction): DataFrame = {
df.withColumn("new_col", func(col("col1")))
}
REPLが初期化された値の型を返すでは非常に有用であるスカラ:適切なシグネチャを持つ
ありがとうseptra。あなたは私が上記のエラーを打つのは間違いありません。しかし、私は唯一のケースクラスを返すようにしようとした場合にも、このエラーを打っているように見えます。 http://stackoverflow.com/questions/42121649/schema-for-type-any-is-not-supported – Yash