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, или вы можете сделать соединение, если хотите сделать это для нескольких значений.

Но этот подход не будет работать наверняка!

Другие вопросы по тегам