[英]How to pass complex Java Class Object as parameter to Scala UDF in Spark?
[英]How to convert Scala UDF's to Java version in Apache Spark?
我已經在Scala中編寫了Apache Spark udf,如下所示:
val toLongDate = udf((t: String) => new SimpleDateFormat("dd/MM/yyyy HH:mm:ss aa").parse(t).getTime)
我想這樣用Java編寫udf:
import static org.apache.spark.sql.functions.udf;
UserDefinedFunction toLongDate = udf(myFunction1, typeTag1, typeTage2);
我不知道如何將這些參數提供給org.apache.spark.sql.functions.udf
函數?
我已經編寫了myFunction1,但是IntelliJ Idea向我顯示了無法解決compose
和andThen
函數的錯誤:
AFAIK,您無法以任何有意義的方式從Java獲取TypeTag
,它是由Scala編譯器生成的。 你不得不編譯一些Scala代碼產生TypeTag
秒,在這種情況下,它更容易調用udf
從那里來代替。
對於Function1
,答案是擴展AbstractFunction1
:
new AbstractFunction1<String, Long>() {
@Override
Long apply(String x) { ... }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.