当spark作业中需要有jar文件时,需要通过两种方式添加到spark作业中:
1.--jar path命令中的选项。
2 SparkContext.addJar("path")..
谁能告诉我这两种方式之间的区别?
从这个问题来看,答案是它们是相同的,只是优先级不同,但我认为这不是真的。--jars如果我在纱线集群模式下提交 Spark 作业,根据官方网站,如果命令中的选项中未包含 jar 文件,则 addJar() 将无法工作。
如果您将 SparkContext.addJar 函数与本地文件一起使用并在纱线集群模式下运行,则 --jars 选项允许 SparkContext.addJar 函数工作。如果您将其与 HDFS、HTTP、HTTPS 或 FTP 文件一起使用,则不需要使用它。
原因是驱动程序与客户端运行在不同的机器上。因此,--jars命令中的选项似乎来自客户端,而函数addJar()只能在驱动程序中的 jar 上工作。
然后我在本地模式下进行了测试。
1.spark-shell --master local --jars path/to/jar
如果我以这种方式启动spark-shell,则jar中的对象可以在spark-shell中使用
2.spark-shell --master local
如果我以这种方式启动spark-shell并使用sc.addJar("path/to/jar"),则jar文件中的对象无法导入到spark-shell中,并且出现class cannot be found错误。
我的问题是:
为什么该方法SparkContext.addJar()在本地模式下不起作用?
SparkContext.addJar()和 和有什么区别--jars?
我的环境:hortonworks 2.5集群,spark版本是1.6.2。如果有人能对此有所了解,我将不胜感激。
| 归档时间: |
|
| 查看次数: |
3311 次 |
| 最近记录: |