4

У меня есть Spark 1.6, развернутый на EMR 4.4.0 Я подключаюсь к datastax cassandra 2.2.5, развернутому на EC2.Spark + Cassandra на EMR LinkageError

Соединение работает для сохранения данных в cassandra с использованием искрового разъема 1.4.2_s2.10 (Так как у него есть гуава 14). Однако чтение данных из cassandra не выполняется с использованием версии 1.4.2.

Правильная комбинация предлагает использовать 1.5.x и, следовательно, я начал использовать 1.5.0. Сначала я столкнулся с проблемой guava, и я исправил ее с помощью решения userClasspathFirst.

spark-shell --conf spark.yarn.executor.memoryOverhead=2048 
--packages datastax:spark-cassandra-connector:1.5.0-s_2.10 
--conf spark.cassandra.connection.host=10.236.250.96 
--conf spark.executor.extraClassPath=/home/hadoop/lib/guava-16.0.1.jar:/etc/hadoop/conf:/etc/hive/conf:/usr/lib/hadoop-lzo/lib/*:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/* 
--conf spark.driver.extraClassPath=/home/hadoop/lib/guava-16.0.1.jar:/etc/hadoop/conf:/etc/hive/conf:/usr/lib/hadoop-lzo/lib/*:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/* 
--conf spark.driver.userClassPathFirst=true 
--conf spark.executor.userClassPathFirst=true 

Теперь я пройти гуавы 16 ошибок, однако, так как я использую userClassPathFirst я столкнулся еще один конфликт, и я не получаю какой-либо способ ее разрешения.

Lost task 2.1 in stage 2.0 (TID 6, ip-10-187-78-197.ec2.internal): java.lang.LinkageError: 
loader constraint violation: loader (instance of org/apache/spark/util/ChildFirstURLClassLoader) previously initiated loading for a different type with name "org/slf4j/Logger" 

У меня такая же проблема, когда я повторяю шаги с использованием кода Java вместо искровой оболочки. Любое решение, чтобы пройти мимо него или любым другим более чистым способом?

Спасибо!

+0

Я на самом деле имея точно такой же вопрос. – LiMuBei

+0

У нас есть первопричина, это противоречивая зависимость. Когда я удалил все зависимости из пакета и имел только абсолютно необходимые проблемы, проблема исчезла. Я не могу указать конкретный пакет, вызывающий конфликт зависимости, но, безусловно, его коренная причина. Мы перепроектировали код, чтобы разделить на два пакета, один со всей бизнес-логикой, а другой очень тощий, чтобы делать искровые задания. – lazywiz

+1

Ну, моя единственная зависимость от Spark - это разъем Cassandra, и у меня все еще есть ошибка. Для меня это похоже на проблему, описанную здесь: http://techblog.applift.com/upgrading-spark. Так что в основном два загрузчика классов сталкиваются по какой-то причине. – LiMuBei

ответ

0

У меня такая же ошибка при использовании флага userClassPathFirst.

Удалите эти два флага из конфигурации и просто используйте параметр «extraClassPath».

Подробный ответ здесь: https://stackoverflow.com/a/40235289/3487888