2017-01-26 10 views
3

ランダムに生成されたidを持つ列をSparkデータフレームに追加したいとします。これを行うには、私はそうのように、UUIDのランダムUUIDのメソッドを呼び出すためにUDFを使用しています:Spark create入力を受け入れないUDF

明らか
def getRandomId(s:String) : String = { 
    UUID.randomUUID().toString() 
} 

val idUdf = udf(getRandomId(_:String)) 
val newDf = myDf.withColumn("id", idUdf($"colName")) 

は、私のgetRandomId関数は、入力パラメータを必要としません。ただし、列として入力されないUDFを作成する方法を理解することはできません。それはスパークで可能ですか?

スパークを使用しています。

+2

可能[ScalaとSparkのUDF関数]の複製(http://stackoverflow.com/questions/38633216/scala-and-spark-udf-function) – Yaron

答えて

3

udfをパラメータなしで登録できます。

def getRandomId() : String = { 
    UUID.randomUUID().toString() 
} 

val idUdf = udf(getRandomId _) 
val newDf = df.withColumn("id", idUdf()) 

トリックはgetRandomId _のアウト機能() => Stringを作成している:ここ() => Stringは、あなたがこれを試すことができDATAFRAME

val newDf = myDf.withColumn("uuid", uuid()) 
1

にUDF(uuid)を使用して、要件

import org.apache.spark.sql.functions.udf 
val uuid = udf(() => java.util.UUID.randomUUID().toString) 

を解決しますあなたの方法

関連する問題