Зарегистрируйте UDF в SqlContext из Scala для использования в PySpark
Можно ли зарегистрировать UDF (или функцию), написанную на Scala, для использования в PySpark? Например.:
val mytable = sc.parallelize(1 to 2).toDF("spam")
mytable.registerTempTable("mytable")
def addOne(m: Integer): Integer = m + 1
// Spam: 1, 2
В Scala теперь возможно следующее:
val UDFaddOne = sqlContext.udf.register("UDFaddOne", addOne _)
val mybiggertable = mytable.withColumn("moreSpam", UDFaddOne(mytable("spam")))
// Spam: 1, 2
// moreSpam: 2, 3
Я хотел бы использовать "UDFaddOne" в PySpark, как
%pyspark
mytable = sqlContext.table("mytable")
UDFaddOne = sqlContext.udf("UDFaddOne") # does not work
mybiggertable = mytable.withColumn("+1", UDFaddOne(mytable("spam"))) # does not work
Справочная информация: Мы - команда разработчиков, некоторые программируют на Scala, а некоторые на Python и хотели бы поделиться уже написанными функциями. Также было бы возможно сохранить это в библиотеке и импортировать это.