2016-08-14 11 views
1

私はSpark SQL DataFrameに変換したRDDを持っています。私はこのような何かを探して終わるのUDFの列の変換の数、やりたい:などPySpark SQL:.withColumnコールの統合

df = df.withColumn("col1", udf1(df.col1))\ 
     .withColumn("col2", udf2(df.col2))\ 
     ... 
     ... 
     .withColumn("newcol", udf(df.oldcol1, df.oldcol2))\ 
     .drop(df.oldcol1).drop(df.oldcol2)\ 
     ... 

をこれを表現するために、より簡潔な方法(両方の繰り返しwithColumnがありますされ、 dropコール)?

答えて

1

複数の演算を1つの式で渡すことができます。

df = df.select(*exprs) 

ので、このアプローチを取って、あなたのdf上で、このようなudfsを実行し、あなたは、結果の列の名前を変更します:

exprs = [udf1(col("col1")).alias("col1"), 
     udf2(col("col2")).alias("col2"), 
     ... 
     udfn(col("coln")).alias("coln")] 

そしては selectの内側にそれらを解凍します。私の答えはほぼ正確に thisに似ていますが、質問は私のものと全く違っていたので、私はそれに答えることにしました。

関連する問題