Spark独立集群看起来正在运行而没有问题:
http://i.stack.imgur.com/gF1fN.png
我按照本教程.
我已经构建了一个胖jar来在集群上运行这个JavaApp.在maven包之前:
find . ./pom.xml ./src ./src/main ./src/main/java ./src/main/java/SimpleApp.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"; JavaRDDlogData = sc.textFile(logFile).cache(); long numAs = logData.filter(new Function () { public Boolean call(String s) { return s.contains("a"); } }).count(); System.out.println("Lines with a: " + numAs); } }
此程序仅在master设置为setMaster("local")时有效.否则我得到这个错误
$ java -cp path_to_file/simple-project-1.0-allinone.jar SimpleApp
http://i.stack.imgur.com/doRSn.png
在SimpleApp.java文件中有匿名类(扩展Function).此类编译为SimpleApp $ 1,应该向Spark集群中的每个worker广播.
最简单的方法是将jar显式添加到Spark上下文中.sparkContext.addJar("path_to_file/simple-project-1.0-allinone.jar")
在JavaSparkContext
创建和重建jar文件之后添加类似的内容.然后主Spark程序(称为驱动程序)将自动将您的应用程序代码传递给集群.