0

마스터 및 3 명의 직원이있는 스파크 독립형 클러스터에서 작업하고 있습니다. 내 드라이버도 동일한 네트워크에 있으므로 기본적으로 모든 작업자와 마스터가 드라이버와 통신 할 수 있으며 그 반대의 경우도 마찬가지입니다.Spark Worker가 CassandraPartition 클래스를 찾을 수 없습니다.

나는 sparksession (자바 프로그램에서)을 얻음으로써 드라이버에서 일을하려고한다. 프로그램에 추가 된 Maven 종속성은 spark-core_2.11 (v2.2), spark-sql_2.11 (v2.2), spark-streaming_2.11 (v2.2), spark-mllib_2.11 (v2.2) , spark-cassandra-connector_2.11 (v2.0.5), spark-cassandra-connector-java_2.11 (v1.6.0-M1).

슬레이브에서 다음 오류가 발생합니다.

java.lang.ClassNotFoundException: com.datastax.spark.connector.rdd.partitioner.CassandraPartition 
    java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    java.lang.Class.forName0(Native Method) 
    java.lang.Class.forName(Class.java:348) 
    org.apache.spark.serializer.JavaDeserializationStream$$anon$1.resolveClass(JavaSerializer.scala:67) 
    java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1826) 
    java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1713) 
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2000) 
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535) 
    java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2245) 
    java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2169) 
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2027) 
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535) 
    java.io.ObjectInputStream.readObject(ObjectInputStream.java:422) 
    org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:75) 
    org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:114) 
    org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:309) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    java.lang.Thread.run(Thread.java:748) 

누군가가이 문제를 알아내는 나를 도울 수 ...

또한, 슬레이브에서 발사 명령은 다음과 같습니다

17/11/15 03:21:07 INFO ExecutorRunner: Launch command: "/docker-java-home/jre/bin/java" 
    "-cp" "//conf/:/jars/*" "-Xmx1024M" 
    "-Dspark.cassandra.connection.port=9042" 
    "-Dspark.driver.port=7078" 
    "org.apache.spark.executor.CoarseGrainedExecutorBackend" 
    "--driver-url" 
    "spark://[email protected]:xx:xx:xx:7078" 
    "--executor-id" "10" "--hostname" 
    "slave01" "--cores" "4" 
    "--app-id" "app-1-0019" "--worker-url" "spark://[email protected]:12125" 

감사합니다!

답변

0

스파크 작업자의 런타임 클래스 경로에 datastax spark cassandra 커넥터 종속성 병을 추가하여이 문제를 해결했습니다.