【发布时间】:2020-11-19 23:41:31
【问题描述】:
我注意到在我的项目中有两种运行 spark 作业的方法。
-
第一种方法是将作业提交到 spark-submit 文件
./bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master 本地[8]
/path/to/examples.jar
100 -
第二种方法是将java文件打包成jar并通过hadoop运行,同时在MainClassName里面有Spark代码:
hadoop jar JarFile.jar MainClassName
` 这两种方式有什么区别? 我需要具备哪些先决条件才能使用它们?
【问题讨论】:
-
我相信它将被添加到类路径中的 JAR 类型。
hadoop jar只会在执行 JAR 时将 hadoop 相关的 JAR 添加到类路径,而spark-submit将添加 spark core、sql 以及 hadoop 相关的 JAR。 -
我怀疑
hadoop jar是否适用于 Spark。无法传递执行器参数,例如,您也不应该在代码中手动setMaster,因此它不会知道在YARN中运行 -
philantrovert,看起来 haddop jar 命令正在 hadoop 上执行 jar:stackoverflow.com/questions/13012511/…。问题是如果它不是 mapreduce jar,它是如何并行化的。
-
好吧,它根本不应该运行,因为
hadoop jar没有将 Spark 库放入类路径中。你的 uber jar 也不应该包含 spark-core
标签: apache-spark hadoop hadoop-yarn