Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UDF spark scala基于输入范围计算结果_Scala_Apache Spark - Fatal编程技术网

UDF spark scala基于输入范围计算结果

UDF spark scala基于输入范围计算结果,scala,apache-spark,Scala,Apache Spark,我写道: val kind: UserDefinedFunction = udf((col1: Int, col2: Float, col3: Float) => { if (col1 < 11) { BREAKFAST } else if (col1 >= 11 && col1 <= 14 && (col2 > 2 || col3 > 0)) { LUNCH } el

我写道:

val kind: UserDefinedFunction = udf((col1: Int, col2: Float, col3: Float) => {
    if (col1 <  11) {
      BREAKFAST

    } else if (col1 >= 11 && col1 <= 14 && (col2 > 2 || col3 > 0)) {
      LUNCH
    }
    else if (col1 > 14 && col1 < 18) {
      SNACK
    }
    else if (col1 >= 18) {
      DINNER
    }
    else {
      OTHER
    }
你知道怎么解决这个问题吗


谢谢

这是因为您的数据有空值

您需要将参数类型从
Int
更改为
Integer

让我们看看例子

scala>df.printSchema
根
|--年龄:整数(可空=真)
|--高度:整数(nullable=true)
scala>df.show
+---+------+
|年龄|身高|
+---+------+
| 10|    10|
|10 |零|
|15 |零|
+---+------+
val-kind=udf((col1:Int,col2:Int)=>{
if(col1<11){
“案例1”
}else if(col1>=11&&col1 2){
“案例2”
}
否则如果(col1>14&&col1<18){
“案例3”
}
else if(col1>=18){
“案例4”
}
否则{
“案例5”
}
}
)
我有3行,udf看起来像你的

当我调用udf时,我得到空结果

scala>df.withColumn(“输出”、种类(df(“年龄”)、df(“高度”)).show
+---+------+------+
|年龄|身高|输出|
+---+------+------+
|10 | 10 |案例1|
|10 |零|零|
|15 |零|零|
+---+------+------+
但是,如果我这样修改udf:

val-kind=udf((col1:Integer,col2:Integer)=>{
if(col1<11){
“案例1”
}else if(col1>=11&&col1 2){
“案例2”
}
否则如果(col1>14&&col1<18){
“案例3”
}
else if(col1>=18){
“案例4”
}
否则{
“案例5”
}
}
)
输出没有空值,因为
Int
type不能有
null
,但
Integer
可以

scala>df.withColumn(“输出”、种类(df(“年龄”)、df(“高度”)).show
+---+------+------+
|年龄|身高|输出|
+---+------+------+
|10 | 10 |案例1|
|10 |空|情况1|
|15 |空|情况3|
+---+------+------+
  MEAL|INT_HOUR|
+------------+--------+
|        null|      15|
|        null|      15|
|        null|      15|
|        null|      18|
|        null|      17|
|        null|      14|
|        null|      11|
|        null|    null|
|        null|    null|
|        null|    null|
|        null|    null|
|        null|    null|
|       LUNCH|      13|
|        null|      11|
|        null|      14|
|        null|      15|
|        null|      15|
|        null|      14|
|        null|    null|
|        null|      11