不支持的文字类型类 scala.runtime.BoxedUnit

Posted

技术标签:

【中文标题】不支持的文字类型类 scala.runtime.BoxedUnit【英文标题】:Unsupported literal type class scala.runtime.BoxedUnit 【发布时间】:2019-04-21 19:48:02 【问题描述】:

我正在尝试过滤从 oracle 读取的数据框的列,如下所示

import org.apache.spark.sql.functions.col, lit, when

val df0  =  df_org.filter(col("fiscal_year").isNotNull())

当我这样做时,我得到以下错误:

java.lang.RuntimeException: Unsupported literal type class scala.runtime.BoxedUnit ()
at org.apache.spark.sql.catalyst.expressions.Literal$.apply(literals.scala:77)
at org.apache.spark.sql.catalyst.expressions.Literal$$anonfun$create$2.apply(literals.scala:163)
at org.apache.spark.sql.catalyst.expressions.Literal$$anonfun$create$2.apply(literals.scala:163)
at scala.util.Try.getOrElse(Try.scala:79)
at org.apache.spark.sql.catalyst.expressions.Literal$.create(literals.scala:162)
at org.apache.spark.sql.functions$.typedLit(functions.scala:113)
at org.apache.spark.sql.functions$.lit(functions.scala:96)
at org.apache.spark.sql.Column.apply(Column.scala:212)
at com.snp.processors.BenchmarkModelValsProcessor2.process(BenchmarkModelValsProcessor2.scala:80)
at com.snp.utils.Utils$$anonfun$getAllDefinedProcessors$1.apply(Utils.scala:30)
at com.snp.utils.Utils$$anonfun$getAllDefinedProcessors$1.apply(Utils.scala:30)
at com.sp.MigrationDriver$$anonfun$main$6$$anonfun$apply$2.apply(MigrationDriver.scala:140)
at com.sp.MigrationDriver$$anonfun$main$6$$anonfun$apply$2.apply(MigrationDriver.scala:140)
at scala.Option.map(Option.scala:146)
at com.sp.MigrationDriver$$anonfun$main$6.apply(MigrationDriver.scala:138)
at com.sp.MigrationDriver$$anonfun$main$6.apply(MigrationDriver.scala:135)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
at scala.collection.Iterator$class.foreach(Iterator.scala:891)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1334)
at scala.collection.MapLike$DefaultKeySet.foreach(MapLike.scala:174)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732)
at com.sp.MigrationDriver$.main(MigrationDriver.scala:135)
at com.sp.MigrationDriver.main(MigrationDriver.scala)

知道我在这里做错了什么以及如何解决这个问题吗?

【问题讨论】:

请添加有关 Spark 版本和 Spark Cassandra 连接器的更多信息... @AlexOtt,先生,这是版本详细信息:scala - 2.11 spark - 2.3.1 cassandra - 3.11.1 和 spark-cassandra-connector 版本? “试图过滤数据框的列”是什么意思?你能详细说明一下吗? 检查此***.com/questions/39727742/… 进行过滤,您也可以检查我的答案***.com/questions/50478512/… 【参考方案1】:

只需删除函数上的括号:

发件人:val df0 = df_org.filter(col("fiscal_year").isNotNull()) 至:val df0 = df_org.filter(col("fiscal_year").isNotNull)

【讨论】:

【参考方案2】:

尝试在过滤器中删除 isNull() 中的 ()

【讨论】:

什么? OP 的问题中没有isNull 他的意思是把isNotNull上的括号去掉,这是正确的答案。 所以这对我来说完全有效,但为什么呢?发生了什么事?

以上是关于不支持的文字类型类 scala.runtime.BoxedUnit的主要内容,如果未能解决你的问题,请参考以下文章

Spark:不支持的文字类型类 scala.collection.immutable.Nil$ List()

PHP加水印代码 支持文字和图片水印

搭配 IconFont 在 WPF 中使用文字图片

在 TypeScript 中使用类型变量访问对象文字不起作用

ES6类文字中的IIFE

测试:语音转文字的体验