相关疑难解决方法(0)

如何在 Java/Kotlin 中创建一个返回复杂类型的 Spark UDF?

我正在尝试编写一个返回复杂类型的 UDF:

private val toPrice = UDF1<String, Map<String, String>> { s ->
    val elements = s.split(" ")
    mapOf("value" to elements[0], "currency" to elements[1])
}


val type = DataTypes.createStructType(listOf(
        DataTypes.createStructField("value", DataTypes.StringType, false),
        DataTypes.createStructField("currency", DataTypes.StringType, false)))
df.sqlContext().udf().register("toPrice", toPrice, type)
Run Code Online (Sandbox Code Playgroud)

但任何时候我使用这个:

df = df.withColumn("price", callUDF("toPrice", col("price")))
Run Code Online (Sandbox Code Playgroud)

我收到一个神秘的错误:

private val toPrice = UDF1<String, Map<String, String>> { s ->
    val elements = s.split(" ")
    mapOf("value" to elements[0], "currency" to elements[1])
}


val type = DataTypes.createStructType(listOf(
        DataTypes.createStructField("value", DataTypes.StringType, false),
        DataTypes.createStructField("currency", DataTypes.StringType, false)))
df.sqlContext().udf().register("toPrice", toPrice, type)
Run Code Online (Sandbox Code Playgroud)

我尝试使用自定义数据类型: …

java user-defined-functions kotlin apache-spark

7
推荐指数
2
解决办法
4797
查看次数