为什么我 运行 无需 spark-submit 就可以直接在 eclipse 中启动应用程序
why can i run spark app in eclipse directly without spark-submit
1.My spark(独立)集群:spmaster、spslave1、spslave2
2.For 我的简单 spark 应用程序,它从 mysql.
中选择一些记录
public static void main(String[] args) {
SparkConf conf = new SparkConf()
.setMaster("spark://spmaster:7077")
.setAppName("SparkApp")
.set("spark.driver.extraClassPath","/usr/lib/spark-1.6.1-bin-hadoop2.6/lib/mysql-connector-java-5.1.24.jar") //the driver jar was uploaded to all nodes
.set("spark.executor.extraClassPath","/usr/lib/spark-1.6.1-bin-hadoop2.6/lib/mysql-connector-java-5.1.24.jar");
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sc);
String url = "jdbc:mysql://192.168.31.43:3306/mytest";
Map<String, String> options = new HashMap<String, String>();
options.put("url", url);
options.put("dbtable", "mytable");
options.put("user", "root");
options.put("password", "password");
DataFrame jdbcDF = sqlContext.read().format("jdbc").options(options)
.load();
jdbcDF.registerTempTable("c_picrecord");
DataFrame sql = sqlContext.sql("select * from mytable limit 10");
sql.show(); // **show the result on eclipse console**
sc.close();
}
3.My问题:当我right click
->run as 'Java Application'
时,它运行成功,我可以在webUI<spark://spmaster:7077>
上找到工作。我不明白它是如何工作的,使用 spark-submit.sh
.
有什么不同
当我们使用spark-submit.sh
提交申请时,spark-submit默认已经创建了Spark Context(aka Driver)。
但是当我们使用JavaAPI(JavaSparkContext
)连接master时,那么Javaapplication就会变成Driver .通过使用此驱动程序,所有 application/job 都将提交给 master。
spark-submit.sh 脚本只是 ${JAVA_HOME}/bin/java[= 的包装器20=]执行命令。它设置环境详细信息,然后 运行 类似于:
${JAVA_HOME}/bin/java -Xmx128m -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "$@"
当您点击 运行 作为 'Java Application' 时,您还会触发 java 执行命令,但没有 spark-submit.sh 完成的所有环境设置以及@Sheel 提到的差异。
1.My spark(独立)集群:spmaster、spslave1、spslave2
2.For 我的简单 spark 应用程序,它从 mysql.
中选择一些记录public static void main(String[] args) {
SparkConf conf = new SparkConf()
.setMaster("spark://spmaster:7077")
.setAppName("SparkApp")
.set("spark.driver.extraClassPath","/usr/lib/spark-1.6.1-bin-hadoop2.6/lib/mysql-connector-java-5.1.24.jar") //the driver jar was uploaded to all nodes
.set("spark.executor.extraClassPath","/usr/lib/spark-1.6.1-bin-hadoop2.6/lib/mysql-connector-java-5.1.24.jar");
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sc);
String url = "jdbc:mysql://192.168.31.43:3306/mytest";
Map<String, String> options = new HashMap<String, String>();
options.put("url", url);
options.put("dbtable", "mytable");
options.put("user", "root");
options.put("password", "password");
DataFrame jdbcDF = sqlContext.read().format("jdbc").options(options)
.load();
jdbcDF.registerTempTable("c_picrecord");
DataFrame sql = sqlContext.sql("select * from mytable limit 10");
sql.show(); // **show the result on eclipse console**
sc.close();
}
3.My问题:当我right click
->run as 'Java Application'
时,它运行成功,我可以在webUI<spark://spmaster:7077>
上找到工作。我不明白它是如何工作的,使用 spark-submit.sh
.
当我们使用spark-submit.sh
提交申请时,spark-submit默认已经创建了Spark Context(aka Driver)。
但是当我们使用JavaAPI(JavaSparkContext
)连接master时,那么Javaapplication就会变成Driver .通过使用此驱动程序,所有 application/job 都将提交给 master。
spark-submit.sh 脚本只是 ${JAVA_HOME}/bin/java[= 的包装器20=]执行命令。它设置环境详细信息,然后 运行 类似于:
${JAVA_HOME}/bin/java -Xmx128m -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "$@"
当您点击 运行 作为 'Java Application' 时,您还会触发 java 执行命令,但没有 spark-submit.sh 完成的所有环境设置以及@Sheel 提到的差异。