簡體   English   中英

如何在Apache Spark中將Scala UDF轉換為Java版本?

[英]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向我顯示了無法解決composeandThen函數的錯誤:

在此處輸入圖片說明

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM