【问题标题】:How to convert Scala UDF's to Java version in Apache Spark?如何在 Apache Spark 中将 Scala UDF 转换为 Java 版本?
【发布时间】:2016-02-03 11:03:21
【问题描述】:

我在 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 函数的错误:

【问题讨论】:

    标签: java scala apache-spark user-defined-functions spark-dataframe


    【解决方案1】:

    AFAIK,您无法以任何有意义的方式从 Java 中获取 TypeTag,它是由 Scala 编译器生成的。您必须编译一些生成TypeTags 的Scala 代码,在这种情况下,从那里调用udf 要容易得多。

    对于Function1,答案是扩展AbstractFunction1

    new AbstractFunction1<String, Long>() {
        @Override
        Long apply(String x) { ... }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-24
      • 1970-01-01
      • 2017-03-28
      • 2021-05-18
      • 2020-11-25
      • 2021-07-06
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多