4

EMR 4.4.0 に Spark 1.6 をデプロイしました。EC2 にデプロイされた datastax cassandra 2.2.5 に接続しています。

接続は、spark-connector 1.4.2_s2.10 を使用して cassandra にデータを保存するように機能します (guava 14 があるため)。ただし、1.4.2 バージョンのコネクタを使用すると、cassandra からのデータの読み取りに失敗します。

適切な組み合わせは 1.5.x を使用することを示唆しているため、1.5.0 を使用し始めました。最初にグアバの問題に直面し、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

現在、Guava 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"

spark-shell の代わりに Java コードを使用して手順を繰り返すと、同じ問題が発生します。それを乗り越えるための解決策、または他のよりクリーンな方法はありますか?

ありがとう!

4

1 に答える 1