я получаюNoClassDefFoundError при использовании Avro в свече скорлупе
java.lang.NoClassDefFoundError: org/apache/avro/mapred/AvroWrapper
при вызове show()
на объекте DataFrame. Я пытаюсь сделать это через оболочку (искр-оболочка - мама пряжи). Я вижу, что оболочка распознает схему при создании объекта DataFrame, но если я выполню какие-либо действия над данными, она всегда будет бросать NoClassDefFoundError
при попытке создать экземпляр AvroWrapper
. Я попытался добавить avro-mapred-1.8.0.jar
в свой каталог $HDFS_USER/lib
на кластере и даже включил его с помощью опции -jar при запуске оболочки. Ни один из этих вариантов не работал. Любые советы будут очень признательны. Ниже приведен пример кода:
scala> import org.apache.spark.sql._
scala> import com.databricks.spark.avro._
scala> val sqc = new SQLContext(sc)
scala> val df = sqc.read.avro("my_avro_file") // recognizes the schema and creates the DataFrame object
scala> df.show // this is where I get NoClassDefFoundError
кажется, просто сидеть там. не будет развиваться дальше. 'org.apache.avro # avro-mapred добавлен как зависимость' ' com.databricks # spark-avro_2.10 добавлен как зависимость' ':: разрешающие зависимости :: org.apache.spark # spark-submit -parent; 1.0' \t 'confs: [default]' – Pudge
Это странно. Можете ли вы вставить всю команду, которую вы используете, для запуска искровой оболочки? –
Извинения за отсроченный ответ Мне пришлось переключать задачи на пару дней. Вот команда, которую я запускаю: spark-shell --master yarn --packages org.apache.avro: avro-mapred: 1.7.7, com.databricks: spark-avro_2.10: 2.0.1'. Кроме того, не уверен, что это имеет значение, но мы работаем с CDH 5.6. Еще раз спасибо. – Pudge