2016-03-24 8 views
1

Spark 1.5.1'i bağımsız küme yöneticisi ile kullanıyorum. Spark'in varsayılan spark-assembly-1.5.1-hadoop2.6.0.jar, Avro 1.7.7'yi içerir. Özel Avro kütüphanemi tüm Spark işlerinde kullanmak istiyorum, buna Avro 1.7.8 diyelim. Bu, dev modunda mükemmel çalışır (ana = yerel [*]). Ancak, uygulamanızı istemci modunda kümeye gönderdiğimde, yürütücüler hala Avro 1.7.7 kitaplığını kullanıyor.Spark istemci modunda yöneticilere ekstra sınıf yolu ekleme

URL url = getClass().getClassLoader().getResource(GenericData.class.getName().replace('.','/')+".class"); 

Bunu yazdırırken, benim infaz deftercisi gösterir:

/opt/spark/lib/spark-assembly-1.5.1-hadoop2.6.0.jar/org/apache/avro/ İşte

export SPARK_WORKER_OPTS="-Dspark.executor.extraClassPath=/home/ansible/avro-1.7.8.jar -Dspark.executor.userClassPathFirst=true 

benim w: jenerik/GenericData.class İşte

işçi düğümünde benim spark-env.sh bir parçasıdır işçi düğümündeki orker işlemi ( ps aux | grep worker):

kıvılcım 955 1.8 1.9 4161448 243600? Sl 13:29 0:09 /usr/java/jdk1.7.0_79/jre/bin/java -cp /home/ansible/avro-1.7.8.jar:/etc/spark-worker/:/opt/spark- 1.5.1-bin-hadoop2.6/lib/kıvılcım montaj-1.5.1-hadoop2.6.0.jar: /opt/spark-1.5.1-bin-hadoop2.6/lib/datanucleus-api-jdo-3.2 .6.jar: /opt/spark-1.5.1-bin-hadoop2.6/lib/datanucleus-rdbms-3.2.9.jar: /opt/spark-1.5.1-bin-hadoop2.6/lib/datanucleus -core-3.2.10.jar -Dspark.executor.extraClassPath =/home/ansible/avro-1.7.8.jar -Dspark.executor.userClassPathFirst = true -Xms512m -Xmx512m -XX: MaxPermSize = 256m org.apache.spark .deploy.worker.Worker --webui portlu 8081 kıvılcım: Açıkçası 7077

bu kavanoza koyun:-a-01 kıvılcım // /home/ansible/avro-1.7.8.jar tüm işçi nodlarında.

Uygulayıcı, kıvılcım aksamının yerine kavanozu kullanmaya nasıl zorlanacağını bilen var mı?

cevap

0

spark-submit için --packages seçeneğini kullanmayı deneyin: Böyle

spark-submit --packages org.apache.avro:avro:1.7.8 .... 

şey. spark-submit kullanmıyorsanız, kullanın - bu tam olarak ne için.

+0

Uygulamamı, "sparkConf.setMaster (" spark: // .... ")' kullanarak SBT'den "client" dağıtım modunda çalıştırıyorum. Benim durumumda söylediklerini eşdeğer: 'sparkConf.setJars (Seq (" dosya: //home/tmouron/avro-1.7.8.jar "))'. Ama bu ek hattında da aynı sorun var: avro-1.7.7 kullanılıyor. – tmouron

İlgili konular