1

Cassandra'dan Spark kullanarak veri okumaya çalışıyorum.Spark işinin kök nedenini Cassandra ile nasıl giderilir (ClassCastException - ShuffleMapTask to Task)?

DataFrame rdf = sqlContext.read().option("keyspace", "readypulse") 
      .option("table", "ig_posts") 
      .format("org.apache.spark.sql.cassandra").load(); 

    rdf.registerTempTable("cassandra_table"); 
    System.out.println(sqlContext.sql("select count(external_id) from cassandra_table").collect()[0].getLong(0)); 

Görev, aşağıdaki hatayla başarısız oluyor. ShuffleMaptask'ın neden çağrıldığını ve neden bunun Görev'e dönüştürülmesinin bir sorun olduğunu anlayamıyorum.

16/03/30 02:27:15 WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, ip-10-165-180-22.ec2.internal): 
      java.lang.ClassCastException: 
      org.apache.spark.scheduler.ShuffleMapTask 
       cannot be cast to org.apache.spark.scheduler.Task 
         at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:193) 
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
         at java.lang.Thread.run(Thread.java:745) 
16/03/30 02:27:15 INFO TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0) on executor ip-10-165-180-22.ec2.internal: 
      java.lang.ClassCastException (org.apache.spark.scheduler.Shuf 
       fleMapTask 
      cannot be cast to org.apache.spark.scheduler.Task) [duplicate 1] 

16/03/30 02:27:15 ERROR TaskSetManager: Task 0 in stage 0.0 failed 4 times; aborting job 

Ben 1.6 Cassandra 2.2 (Datastax Topluluğu) Spark ve 1.6.0-M1-kıvılcım cassandra-konnektör-java_2.10 EMR 4.4 kullanıyorum

I (ayrıca 1.5.0 çalıştı) Ayrıca aşağıdaki kod ile aynı çalıştı, ancak aynı hatayı aldım.

CassandraJavaRDD<CassandraRow> cjrdd = functions.cassandraTable(
      KEYSPACE, tableName).select(columns); 
    logger.info("Got rows from cassandra " + cjrdd.count()); 

    JavaRDD<Double> jrdd2 = cjrdd.map(new Function<CassandraRow, Double>() { 
     @Override 
     public Double call(CassandraRow trainingRow) throws Exception { 
      Object fCount = trainingRow.getRaw("follower_count"); 
      double count = 0; 
      if (fCount != null) { 
       count = (Long) fCount; 
      } 
      return count; 
     } 
    }); 
    logger.info("Mapper done : " + jrdd2.count()); 
    logger.info("Mapper done values : " + jrdd2.collect()); 
+0

Bunu halleddiniz mi? Sorunun asıl nedeni neydi? –

cevap

1

nedeniyle --conf spark.executor.userClassPathFirst=true son zamanlarda benzer sorunla karşılaşmış oldum.

Spark's official documentation teklif

: spark.driver.userClassPathFirst olarak

spark.executor.userClassPathFirst (Deneysel) aynı işlevselliği, ama örnekler eXecutor uygulanır. "Ancak bu çalışma zamanında eklenecektir kullanıcının kavanoz Hadoop dahil asla veya kütüphaneler Spark."

O istisnalar bazı kavanoz versiyonu çatışma nedeniyle olduğunu düşünüyorum, ve kıvılcım belge ile,

İlgili konular