我刚开始学火花。我试图为我的数据帧定义一个UDF。这是一个非常简单的函数:列是dataframe中的长类型。
def category: (Int => Int) ={ a=>
if(a<7){
return a
}
else{
if(a>=7 && a<14){
return 8
}
else{
if(a>=14 && a<28){
return 9
}
else{
return 10
}
}
}
}
import org.apache.spark.sql.functions.udf
val myudf = udf(category)
val df_1 = df.withColumn("ncol", myudf($col))
它总是报告错误:
:78: error: type mismatch; found : Int required: Int => Int return a ^ :82: error: type mismatch; found : Int(8) required: Int => Int return 8 ^ :86: error: type mismatch; found : Int(9) required: Int => Int return 9 ^ :89: error: type mismatch; found : Int(10) required: Int => Int return 10 ^
假定列类型为Long
,则类别
方法应采用Long
参数,而不是Int
。下面是我如何定义函数:
def category: (Long => Long) = { a =>
if (a < 7) a else
if (a < 14) 8 else
if (a < 28) 9 else
10
}
val myudf = udf(category)
或者,您可以在一个代码块中创建UDF
:
val myudf = udf(
(a: Long) =>
if (a < 7) a else
if (a >= 7 && a < 14) 8 else
if (a >= 14 && a < 28) 9 else
10
)
去掉你的退货单。< code>return在大多数scala代码中是不必要的,因为最后一个表达式是自动返回的(这也适用于if语句,整个if是一个返回值的语句)。不建议在不必要时使用< code>return,因为它可能会导致一些意外行为,就像您在这里遇到的情况一样。
让我们简化代码
def category: (Int => Int) ={ a=>
return a
}
这将无法编译。< code>category是一个不带参数的方法,它返回一个函数< code>Int =
def category: (Int => Int) = { a=>
a
}
现在代码工作了,因为我们的方法中的最后一个(也是唯一一个)表达式是函数a =
让我们用你的函数试试
def category: (Int => Int) ={ a=>
if(a<7){
a
}
else{
if(a>=7 && a<14){
8
}
else{
if(a>=14 && a<28){
9
}
else{
10
}
}
}
}
现在它的工作原理是,我们不是尝试从函数内返回
Int
,而是返回整个函数,这是我们想要的。
#产品面经# 二面感觉比一面更佛系,几乎没问简历。 1.自我介绍 2.最近这段实习介绍 3.觉得自己的差异点 4.面试官直接介绍说这轮是交叉面。问我有什么职业发展疑惑吗,可以交流下 5.然后就是职业发展疑惑交流,包括对目前市面上产品的看法、职业兴趣偏好、晋升路径、新人产品如何在入职后快速landing 6.结束
Django 提供了一种健壮的国际化和本地化框架来帮助你实现多种语言和世界区域范围的开发。
为了适应经济的全球一体化,作为开发者,我们需要开发出支持多国语言、国际化的Web应用,即同样的页面在不同的语言环境下需要显示不同的效果,也就是说应用程序在运行时能够根据请求所来自的地域与语言的不同而显示不同的用户界面。这样,当需要在应用程序中添加对新的语言的支持时,无需修改应用程序的代码,只需要增加语言包即可实现。 国际化与本地化(Internationalization and localiza
今天的文章的主题是国际化和本地化,通常简称 I18n 和 L10n。我们想要我们的 microblog 应用程序被尽可能多的用户使用,因为我们不能忘记有许多人是不是讲英文的,或者会说英文,但是更愿意讲本国语言。 为了使得我们的应用程序便于外国访问者,我们将要使用 Flask-Babel 扩展,它提供了一种简单使用的框架用来把应用程序翻译成不用的应用。 如果你还没有安装 Flask-Babel,现在
概述 为了让Django项目可翻译,你必须添加一些钩子到你的Python 代码和模板中。这些钩子叫做翻译字符串。它们告诉Django:“如果这个文本的翻译可用,应该将它翻译成终端用户的语言。”你需要标记这些可翻译的字符串;系统只会翻译它知道的字符串。 Django 提供一些工具用于提取翻译字符串到消息文件中。这个文件方便翻译人员提供翻译字符串的目标语言。翻译人员填充完消息文件后,必须编译它。这个过
介绍 Vant 采用中文作为默认语言,同时支持多语言切换,请按照下方教程进行国际化设置。 使用方法 多语言切换 Vant 通过 Locale 组件实现多语言支持,使用 Locale.use 方法可以切换当前使用的语言。 import { Locale } from 'vant'; // 引入英文语言包 import enUS from 'vant/es/locale/lang/en-US'; L