2015-06-24 4 views
6

मैं स्पार्क 1.4.0/हैडऑप 2.6.0 (केवल hdfs के लिए) का उपयोग कर रहा हूं और स्कैला चलाने पर SparkPageRank उदाहरण (उदाहरण/src/मुख्य/स्केला/org/अपाचे/चिंगारी/उदाहरण/SparkPageRank.scala), मैं निम्नलिखित त्रुटि का सामना करना:स्पार्क 1.4.0 java.lang.No.SuchMethodError: com.google.common.base.Stopwatch.elapsedMillis() जे

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.elapsedMillis()J 
    at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:245) 
    at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:313) 
    at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:207) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217) 
    at scala.Option.getOrElse(Option.scala:120) 
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:217) 
    at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:32) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217) 
    at scala.Option.getOrElse(Option.scala:120) 
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:217) 
    at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:32) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217) 
    at scala.Option.getOrElse(Option.scala:120) 
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:217) 
    at org.apache.spark.rdd.RDD$$anonfun$distinct$2.apply(RDD.scala:329) 
    at org.apache.spark.rdd.RDD$$anonfun$distinct$2.apply(RDD.scala:329) 
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:147) 
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:108) 
    at org.apache.spark.rdd.RDD.withScope(RDD.scala:286) 
    at org.apache.spark.rdd.RDD.distinct(RDD.scala:328) 
    at org.apache.spark.examples.SparkPageRank$.main(SparkPageRank.scala:60) 
    at org.apache.spark.examples.SparkPageRank.main(SparkPageRank.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:621) 
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:170) 
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:193) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:112) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 

मैं जावा के साथ अत्यंत परिचित नहीं हूँ, यह लेकिन ऐसा लगता है कि यह guava संस्करण समस्या

निम्न जानकारी helpfup हो सकती है:

उदाहरण/pom.xml फ़ाइल का
$ find ./spark -name *.jars | grep guava 
./lib_managed/bundles/guava-16.0.1.jar 
./lib_managed/bundles/guava-14.0.1.jar 

हिस्सा:

... 
<dependency> 
     <groupId>org.apache.cassandra</groupId> 
     <artifactId>cassandra-all</artifactId> 
     <version>1.2.6</version> 
     <exclusions> 
     <exclusion> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
     </exclusion> 
... 

और वास्तव में ऐसा लगता है कि वर्ग समस्याग्रस्त विधि शामिल नहीं है:

$ javap -p /mnt/spark/examples/target/streams/\$global/assemblyOption/\$global/streams/assembly/7850cb6d36b2a6589a4d27ce027a65a2da72c9df_5fa98cd1a63c99a44dd8d3b77e4762b066a5d0c5/com/google/common/base/Stopwatch.class 

Compiled from "Stopwatch.java" 
public final class com.google.common.base.Stopwatch { 
    private final com.google.common.base.Ticker ticker; 
    private boolean isRunning; 
    private long elapsedNanos; 
    private long startTick; 
    public static com.google.common.base.Stopwatch createUnstarted(); 
    public static com.google.common.base.Stopwatch createUnstarted(com.google.common.base.Ticker); 
    public static com.google.common.base.Stopwatch createStarted(); 
    public static com.google.common.base.Stopwatch createStarted(com.google.common.base.Ticker); 
    public com.google.common.base.Stopwatch(); 
    public com.google.common.base.Stopwatch(com.google.common.base.Ticker); 
    public boolean isRunning(); 
    public com.google.common.base.Stopwatch start(); 
    public com.google.common.base.Stopwatch stop(); 
    public com.google.common.base.Stopwatch reset(); 
    private long elapsedNanos(); 
    public long elapsed(java.util.concurrent.TimeUnit); 
    public java.lang.String toString(); 
    private static java.util.concurrent.TimeUnit chooseUnit(long); 
    private static java.lang.String abbreviate(java.util.concurrent.TimeUnit); 
} 

मैं बेहतर समझने के लिए चाहते हैं मुद्दा, और यदि संभव हो तो इसे ठीक करने का तरीका जानें :-)

उत्तर

4

विधि elapsedMilis() को अमरूद 16 में हटा दिया गया है (या हटाया जाने की योजना बनाई गई थी - वैसे भी मैं वहां आपकी लिस्टिंग पर इस नाम के साथ कोई विधि नहीं है।)

जहां तक ​​मुझे याद है कि TimeUnit.MILLISECONDS जैसे कुछ 16 होना चाहिए, या आप 1000000000.0 को विभाजित करके मैन्युअल रूप से परिवर्तित कर सकते हैं।

+0

अच्छा नोट, धन्यवाद। हालांकि उत्तर मैं विवरणों की तलाश में हूं कि क्यों उपयोग किया गया हैडूप/स्पार्क संयोजन काम नहीं कर रहा है, और मैं इसे ठीक करने या इसे अपग्रेड करने के लिए क्या कर सकता हूं। – Bacon

+0

pom.xml में अच्छी बहिष्कार का मतलब है (अधिक या कम) आप प्रोजेक्ट के निर्माण के दौरान क्लासपाथ में निर्दिष्ट जार नहीं जोड़ते हैं। शायद यह मुद्दा है? तो शायद आपको बहिष्करण भाग को हटा देना चाहिए? क्या यह हो सकता है कि ऐप लाइब्रेरी के पुराने संस्करण को अनदेखा कर दे? इस विषय पर मेवेन डॉकू को पढ़ने का प्रयास करें: https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html – kamirru

+0

मैं आपके उत्तर को स्वीकार किए जाने के रूप में चिह्नित करूंगा निष्पक्ष! जिस सेटअप का मैं अब उपयोग कर रहा हूं और जो काम करता प्रतीत होता है वह प्री-बिल्ट स्पार्क संस्करण का उपयोग करते हुए स्पार्क 1.4.0 और हडूप 2.5.2 है। – Bacon

0

हडोप को 2.6.0 से 2.6.5 तक अपग्रेड करने का प्रयास करें। मेरे मामले में यह HBaseAdmin.tableExists (अन्य निर्भरता: Hbase 1.2.0, स्पार्क 2.0.1, स्कैला 2.11.8) का उपयोग करते समय स्टॉपवॉच के साथ समस्या हल हो गई, हालांकि हबेस में इस समस्या का समाधान जारी करने की योजना है 1.3.0, जो वर्तमान में उत्पादन के लिए उपलब्ध नहीं है link

संबंधित मुद्दे