云栖问答

找不到答案?去提问题

java 函数 SQL spark string exception test UDF input 2018-12-19 17:22:19

如何在UDF中传递Row?

我正在用Java编写UDF。

我想对它进行更复杂的操作DateSet。为此,我认为我需要DataSet作为输入传递给我的UDF并返回输出。这是我的代码:

UDF1,String> myUDF = new UDF1,String>() {

        public String call(Dataset<Row> input) throws Exception {
            System.out.println(input);
            return "test";
        }
        };

       // Register the UDF with our SQLContext
        spark.udf().register("myUDF", myUDF, DataTypes.StringType); {

但是当我去尝试使用myUDF时,似乎callUDF函数只接受a Column而不是a DataSet。

任何人都可以帮助我如何DataSet将输入参数传递给UDF?有没有其他方法可以在Spark SQL中调用我的UDF?

1个回答

0

社区小助手

这里有几个问题。

首先,UDF是一个可以使用的函数(里面的值)Columns。从某种意义上说,您可以使用struct函数来组合所需的列以假装您使用整个数据集。

但是,如果您想使用整个数据集,那么您真的需要一个简单接受数据集的纯Java / Scala方法。Spark可以做些什么。它只是一个Java / Scala编程。

1
GO