ClassNotFoundException: org.apache.zeppelin.spark.ZeppelinContext при использовании входного значения Zeppelin внутри метода фильтра DataFrame в spark
У меня проблемы уже два дня, и я не могу найти решения.
я собираюсь
ClassNotFoundException: org.apache.zeppelin.spark.ZeppelinContext
при использовании входного значения внутри метода фильтра spark DataFrame.
val city = z.select("City",cities).toString
oDF.select("city").filter(r => city.equals(r.getAs[String]("city"))).count()
Я даже попытался скопировать входное значение в другой val с
new String(bytes[])
но все равно получаю ту же ошибку.
Тот же код работает без проблем, если вместо получения значения из z.select я объявляю строковый литерал
city: String = "NY"
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0
in stage 49.0 failed 4 times, most recent failure: Lost task 0.3 in stage
49.0 (TID 277, 10.6.60.217): java.lang.NoClassDefFoundError:
Lorg/apache/zeppelin/spark/ZeppelinContext;
1 ответ
Вы принимаете это в неправильном направлении:
val city="NY"
дает вам строку Scala с NY в качестве строки, но когда вы говорите
z.select("City",cities)
затем это возвращает вам dataFrame, а затем вы конвертируете этот объект в String, используя метод to String, а затем пытаетесь сравнить.!
Это не сработает!
Что вы можете сделать, это либо собрать один dF, а затем передать строку Scala соответственно в другой Df, или вы можете сделать соединение, если хотите сделать это для нескольких значений.
Но этот подход не будет работать наверняка!