package com.huangyueran.spark.utils; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; /******************************************************************************* * @date 2019-08-09 14:50 * @author: <a href=mailto:huangyr>黄跃然</a> * @Description: Spark工具类 ******************************************************************************/ public class SparkUtils { public static JavaSparkContext getRemoteSparkContext(Class clazz) { System.setProperty("HADOOP_USER_NAME", "root"); /** * SparkConf:第一步创建一个SparkConf,在这个对象里面可以设置允许模式Local Standalone yarn * AppName(可以在Web UI中看到) 还可以设置Spark运行时的资源要求 */ SparkConf conf = getRemoteSparkConf(clazz); conf.setJars(new String[]{"target/SparkDemo-1.0-SNAPSHOT-jar-with-dependencies.jar"}); /** * 基于SparkConf的对象可以创建出来一个SparkContext Spark上下文 * SparkContext是通往集群的唯一通道,SparkContext在创建的时候还会创建任务调度器 */ return new JavaSparkContext(conf); } public static JavaSparkContext getLocalSparkContext(Class clazz) { System.setProperty("HADOOP_USER_NAME", "root"); /** * SparkConf:第一步创建一个SparkConf,在这个对象里面可以设置允许模式Local Standalone yarn * AppName(可以在Web UI中看到) 还可以设置Spark运行时的资源要求 */ SparkConf conf = getLocalSparkConf(clazz); /** * 基于SparkConf的对象可以创建出来一个SparkContext Spark上下文 * SparkContext是通往集群的唯一通道,SparkContext在创建的时候还会创建任务调度器 */ return new JavaSparkContext(conf); } public static SparkConf getRemoteSparkConf(Class clazz) { SparkConf conf = new SparkConf().setAppName(clazz.getName()); conf.setMaster(Constant.SPARK_REMOTE_SERVER_ADDRESS); conf.set("deploy-mode", "client"); return conf; } public static SparkConf getLocalSparkConf(Class clazz) { return new SparkConf().setAppName(clazz.getName()).setMaster("local"); } }