idea创建Spark项目报错记录
报错1:SparkException: A master URL must be set in your configuration
解决方案:添加conf.setMaster("local");
local[“*”]中代表的是有几个线程,如果只写local就是单线程,如果是local[2]就是两个线程
package com.fyq.spark.rdd;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
public class Spark01 {
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setMaster("local");
JavaSparkContext jsc = new JavaSparkContext(conf);
jsc.close;
}
}
报错2:SparkException: An application name must be set in your configuration
解决方案:添加conf.setAppName("spark"); 名称随便填
package com.fyq.spark.rdd;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
public class Spark01 {
public static void main(String[] args) {
SparkConf conf = new SparkConf();
conf.setMaster("local");
conf.setAppName("spark");
JavaSparkContext jsc = new JavaSparkContext(conf);
jsc.close;
}
}
报错3:Exception in thread "main" java.lang.IllegalAccessError:class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x5b218417)cannot access class sun.nio.ch.DirectBuffer (in module java.base)because module java.base does not export sun.nio.ch to unnamed module @0x5b218417
解决方案:
方案一:添加如下配置-XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED
方案二:使用jdk1.8
具体位置: