当前位置: 首页 > 知识库问答 >
问题:

在火花 Scala UDF 中定义返回值

胡元明
2023-03-14

想象一下下面的代码:

def myUdf(arg: Int) = udf((vector: MyData) => {
  // complex logic that returns a Double
})

如何定义myUdf的返回类型,以便查看代码的人立即知道它返回了一个Double?

共有3个答案

长孙星汉
2023-03-14

您可以将类型参数传递给<code>udf,至少从Spark 2.3.x开始。使用原始示例(这似乎是一个基于<code>arg )的curried函数):

def myUdf(arg: Int) = udf[Double, Seq[Int]]((vector: Seq[Int]) => {
  13.37 // whatever
})
哈扬
2023-03-14

Spark函数定义了几个udf方法,它们具有以下修饰符/类型:静态

您可以在方括号中指定输入/输出数据类型,如下所示:

def myUdf(arg: Int) = udf[Double, MyData]((vector: MyData) => {
  // complex logic that returns a Double
})

章松
2023-03-14

我看到了两种方法,要么先定义一个方法,然后将其提升为一个函数

def myMethod(vector:MyData) : Double = {
  // complex logic that returns a Double
}

val myUdf = udf(myMethod _)

或首先使用显式类型定义函数:

val myFunction: Function1[MyData,Double] = (vector:MyData) => {
  // complex logic that returns a Double
}

val myUdf = udf(myFunction)

我通常为我的UDF使用第一种方法

 类似资料:
  • 我是新的火花,我正在尝试安装PySpark通过参考下面的站点。 http://ramhiser.com/2015/02/01/configuring-ipython-totebook-support-for-pyspark/ 我尝试安装两个预构建包,也通过SBT构建Spark包。 当我尝试在IPython笔记本中运行python代码时,我得到以下错误。 在命令窗口中,我可以看到下面的错误。 请注意

  • 首先,我是在laravel中使用ajax的初学者。我试图通过警报或控制台检查输入字段是否正常工作。日志返回未定义。 我的刀片文件代码 我的控制器文件代码。。尽管其注释的公共函数存储(Request$Request){//Tag::create([ 网状物php/** 标签控制器*/ 路由::资源('tag','App\Http\Controllers\TagController'); 路由::po

  • 我有两个这样的数据帧: DF1: DF2: 当我left_outer或内连接df1和df2时,我希望得到的数据帧如下: 当我加入时,id 1是c1、c2还是c3并不重要;但我只需要一张唱片。 请让我知道如何才能在火花中实现这一点。 谢谢你,约翰

  • 我想用Apache Spark读入具有以下结构的文件。 csv太大了,不能使用熊猫,因为读取这个文件需要很长时间。有什么方法类似于 多谢!

  • 问题内容: 因此,当我打开灯箱时,我试图禁止在页面上滚动,而我发现这个确实有用的脚本非常有用。不幸的是,当我在自己的页面上使用它时,它也禁止在灯箱中滚动。我开始用警报调试代码,只是发现该事件。wheelDelta在我的页面上返回“undefined”,而在JSFiddle中,它返回-120。 问题答案: jQuery事件处理程序中的对象不能反映真实事件。是IE和Opera的非标准事件属性,可通过j