2014-05-01 20 views
18

स्पार्क स्टैंडअलोन क्लस्टर यह एक समस्या के बिना चल रहा है लग रहा है।अपाचे स्पार्क java.lang.ClassNotFoundException

मैंने इस जावा ऐप को क्लस्टर पर चलाने के लिए एक वसा जार बनाया है। Maven पैकेज से पहले: SimpleApp.java की

find . 

./pom.xml 
./src 
./src/main 
./src/main/java 
./src/main/java/SimpleApp.java 

सामग्री है:

import org.apache.spark.api.java.*; 
import org.apache.spark.api.java.function.Function; 
import org.apache.spark.SparkConf; 
import org.apache.spark.SparkContext; 


public class SimpleApp { 
public static void main(String[] args) { 

SparkConf conf = new SparkConf() 
        .setMaster("spark://10.35.23.13:7077") 
        .setAppName("My app") 
        .set("spark.executor.memory", "1g"); 

JavaSparkContext sc = new JavaSparkContext (conf); 
String logFile = "/home/ubuntu/spark-0.9.1/test_data"; 
JavaRDD<String> logData = sc.textFile(logFile).cache(); 

long numAs = logData.filter(new Function<String, Boolean>() { 
    public Boolean call(String s) { return s.contains("a"); } 
}).count(); 

System.out.println("Lines with a: " + numAs); 
} 
} 

यह कार्यक्रम केवल काम करता है जब मास्टर ("स्थानीय") setMaster के रूप में स्थापित किया जाएगा। अन्यथा मैं यह त्रुटि

$ जावा -cp path_to_file/सरल-परियोजना-1.0-allinone.jar SimpleApp

http://i.stack.imgur.com/doRSn.pngerror screenshot

+1

आपको अपनी जार फ़ाइल को इंगित करने के लिए ADD_JARS वातावरण सेट करने की आवश्यकता है। उदाहरण के लिए, 'निर्यात ADD_JARS = path_to_file/simple-project-1.0-allinone.jar; java -cp path_to_file/simple-project-1.0-allinone.jar SimpleApp' – zsxwing

+0

अभी भी वही त्रुटि प्राप्त हो रही है। – proofmoore

उत्तर

45

वहाँ गुमनाम वर्ग है SimpleApp में (कि समारोह का विस्तार) मिलता है .java फ़ाइल। यह वर्ग SimpleApp $ 1 में संकलित है, जिसे स्पार्क क्लस्टर में प्रत्येक कार्यकर्ता को प्रसारित किया जाना चाहिए।

स्पार्क संदर्भ में स्पष्ट रूप से जार को जोड़ना सबसे आसान तरीका है। JavaSparkContext के बाद sparkContext.addJar("path_to_file/simple-project-1.0-allinone.jar") जैसे कुछ जोड़ें अपनी जार फ़ाइल बनाएं और पुनर्निर्माण करें। फिर मुख्य स्पार्क प्रोग्राम (जिसे ड्राइवर प्रोग्राम कहा जाता है) स्वचालित रूप से क्लस्टर पर अपना एप्लिकेशन कोड वितरित कर देगा।

+0

यह काम करता है, धन्यवाद। – proofmoore

+15

यदि ऐसा है, तो कृपया प्रश्न बंद करें और @ homutov के उत्तर को अंतिम के रूप में स्वीकार करें। –

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