Registrieren Sie UDF in SqlContext von Scala zur Verwendung in PySpark

Ist es möglich, eine in Scala geschriebene UDF (oder Funktion) für die Verwendung in PySpark zu registrieren? Z.B.

val mytable = sc.parallelize(1 to 2).toDF("spam")
mytable.registerTempTable("mytable")
def addOne(m: Integer): Integer = m + 1
// Spam: 1, 2

In Scala ist jetzt Folgendes möglich:

val UDFaddOne = sqlContext.udf.register("UDFaddOne", addOne _)
val mybiggertable = mytable.withColumn("moreSpam", UDFaddOne(mytable("spam")))
// Spam: 1, 2
// moreSpam: 2, 3

Ich möchte "UDFaddOne" in PySpark verwenden wie

%pyspark

mytable = sqlContext.table("mytable")
UDFaddOne = sqlContext.udf("UDFaddOne") # does not work
mybiggertable = mytable.withColumn("+1", UDFaddOne(mytable("spam"))) # does not work

Background: Wir sind ein Entwicklerteam, das teilweise in Scala und teilweise in Python programmiert ist und bereits geschriebene Funktionen gemeinsam nutzen möchte. Es wäre auch möglich, es in einer Bibliothek zu speichern und zu importieren.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage