开发者社区> 问答> 正文

如何在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?

展开
收起
社区小助手 2018-12-19 17:22:19 2134 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    这里有几个问题。

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

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

    2019-07-17 23:23:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载