2014-05-01 26 views
18

Spark cụm độc lập trông nó chạy mà không có một vấn đề:Apache Spark java.lang.ClassNotFoundException

http://i.stack.imgur.com/gF1fN.pngspark web ui

Tôi đi theo tutorial này.

Tôi đã xây dựng một bình chứa chất béo để chạy JavaApp này trên cụm. Trước khi gói maven:

find . 

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

nội dung của SimpleApp.java là:

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); 
} 
} 

Chương trình này chỉ hoạt động khi tổng thể được thiết lập như setMaster ("địa phương"). Nếu không tôi nhận được lỗi này

$ java -cp path_to_file/đơn giản dự án-1,0-allinone.jar SimpleApp

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

+1

Bạn cần đặt môi trường ADD_JARS để trỏ đến tệp jar của bạn. Ví dụ: 'xuất 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

Vẫn gặp lỗi tương tự. – proofmoore

Trả lời

45

Có lớp nặc danh (mà kéo dài Function) trong SimpleApp .java. Lớp này được biên dịch thành SimpleApp $ 1, nó sẽ được phát cho mỗi nhân viên trong cụm Spark.

Cách đơn giản nhất để thêm jar đó vào bối cảnh Spark. Thêm một cái gì đó như sparkContext.addJar("path_to_file/simple-project-1.0-allinone.jar") sau khi JavaSparkContext tạo và tạo lại tệp jar của bạn. Sau đó, chương trình Spark chính (được gọi là chương trình điều khiển ) sẽ tự động gửi mã ứng dụng của bạn đến cụm.

+0

nó hoạt động, cảm ơn bạn. – proofmoore

+15

Nếu có, vui lòng đóng câu hỏi và chấp nhận câu trả lời của @ homutov là câu trả lời cuối cùng. –

Các vấn đề liên quan