我正在尝试使用以下代码从 java 应用程序连接到独立的 Spark 服务器
SparkConf sparkConf_new = new SparkConf()
.setAppName("Example Spark App")
.setMaster("spark://my.server.com:7077");
JavaSparkContext sparkContext = new JavaSparkContext(sparkConf_new);
JavaRDD<String> stringJavaRDD = sparkContext.textFile("hdfs://cluster/my/path/test.csv");
out.println("Number of lines in file = " + stringJavaRDD.count());
我收到以下错误
An exception occurred at line 12
12: SparkConf sparkConf_new = new SparkConf()
13: .setAppName("Example Spark App")
14: .setMaster("spark://my.server.com:7077");
15: JavaSparkContext sparkContext = new JavaSparkContext(sparkConf_new);
16: JavaRDD<String> stringJavaRDD = sparkContext.textFile("hdfs://cluster/my/path/test.csv");
17: out.println("Number of lines in file = " + stringJavaRDD.count());
java.lang.NoClassDefFoundError: Could not initialize class org.apache.spark.util.Utils$
at org.apache.spark.SparkConf.<init>(SparkConf.scala:59)
at org.apache.spark.SparkConf.<init>(SparkConf.scala:53)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:123)
at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:54)
包括:
scala-library-2.10.5.jar
spark-core_2.10-1.6.0.jar
hadoop-core-1.2.1.jar
最佳答案
您通常将应用程序打包到 Uber JAR 文件中并使用 $SPARK_HOME/bin/spark-submit脚本将其发送到服务器执行。
如果您可以尝试创建最简单的应用程序来开始,那么您在项目依赖项中需要使用的 Maven 就是
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
</dependency>
通过这种方式,您的所有环境配置(服务器 URL 等)都可以在脚本中的 Java 代码之外定义,从而使其更加可移植。
关于java - 如何让 Java 中的 Spark 工作 - 无法初始化类 org.apache.spark.util.Utils$,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40766370/