Неподдерживаемый класс литералов scala.runtime.BoxedUnit

Я пытаюсь отфильтровать столбец фрейма данных, прочитанного из оракула, как показано ниже

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)

Есть идеи, что я здесь делаю не так и как это исправить?


person BdEngineer    schedule 19.11.2018    source источник
comment
пожалуйста, добавьте дополнительную информацию о версиях Spark и соединителе Spark Cassandra ...   -  person Alex Ott    schedule 19.11.2018
comment
@AlexOtt, сэр Вот подробности версии: scala - 2.11 spark - 2.3.1 cassandra - 3.11.1   -  person BdEngineer    schedule 19.11.2018
comment
а версия спарк-кассандра-коннектор?   -  person Alex Ott    schedule 19.11.2018
comment
что вы имеете в виду, пытаясь отфильтровать столбец фрейма данных? вы можете это уточнить?   -  person Ramesh Maharjan    schedule 19.11.2018
comment
@RameshMaharjan, столбец fiscal_year, похоже, имеет некоторые нулевые значения, следовательно, не загружается в кассандру ... поэтому из фрейма данных отфильтровывает эти записи.   -  person BdEngineer    schedule 19.11.2018
comment
@AlexOtt, сэр, его ‹artifactId› spark-cassandra-connector_2.11 ‹/artifactId› ‹version› 2.3.0 ‹/version›   -  person BdEngineer    schedule 19.11.2018
comment
проверьте это stackoverflow.com/questions/39727742/ для фильтрации, и вы тоже можете проверить мой ответ stackoverflow.com/questions/50478512/   -  person Ramesh Maharjan    schedule 20.11.2018
comment
@RameshMaharjan Я получаю аналогичную ошибку при фильтрации ... как ее исправить .... result_df.filter (col (indicator) === lit ('N')) .... ERROR ::: RuntimeException: Unsupported literal тип class java.lang.Character N   -  person BdEngineer    schedule 11.12.2018
comment
сообщение об ошибке недостаточно ясно? @ user3252097? символ не поддерживается в функции подсветки   -  person Ramesh Maharjan    schedule 11.12.2018


Ответы (2)


Попробуйте удалить () из isNull() в своем фильтре.

person enoh    schedule 18.03.2019
comment
Какие? в вопросе OP нет isNull - person Nino Filiu; 19.03.2019
comment
он хочет убрать скобки с isNotNull, что является правильным ответом. - person Mpizos Dimitris; 02.05.2019
comment
Так что это полностью сработало для меня, но ПОЧЕМУ? Что здесь происходит? - person alexddupree; 12.02.2021

Просто удалите скобки в своей функции:

с:
val df0 = df_org.filter(col("fiscal_year").isNotNull())
по:
val df0 = df_org.filter(col("fiscal_year").isNotNull)

person Mpizos Dimitris    schedule 02.05.2019