如何在谷歌云平台(GCP)的Spark集群上提交GraphX PageRank示例作业?
报错原因与核心疑问解答
你触发Error: Missing application resource报错,核心问题刚好对应你提出的两个疑问:
- 是的,你必须明确指定对应应用的
.jar文件:spark-submit的参数校验规则强制要求传入承载运行代码的jar包路径,不管是自定义开发的应用还是Spark内置示例,缺失这个必填参数就会直接返回报错,你之前的命令完全没有补这个字段,是触发错误的直接原因。 - 你不需要单独下载、编译PageRank示例的代码包,这个类已经预置在Spark安装目录自带的示例jar中,不需要额外找外部资源。
内置GraphX示例jar的定位方法
如果你使用的是官方标准预编译的Spark发行版,只需要在本地执行几个简单操作就能找到目标jar:
- 进入你的Spark安装根目录,执行
ls examples/jars/,目录下会存在文件名匹配spark-graphx_*.jar的压缩包,这个就是包含org.apache.spark.examples.graphx.PageRankExample类的目标jar,没有其他额外的依赖包需要找。 - 记录下这个jar的完整绝对路径,常见的路径格式类似
/opt/spark/examples/jars/spark-graphx_2.12-3.5.1.jar,后缀的Scala版本、Spark版本号以你实际安装的版本为准。 - 如果在
examples/jars目录下没有找到对应graphx命名的jar,说明你当初下载Spark发行版时选择了剔除GraphX组件的精简构建,只需要替换为带全组件的标准预编译Spark包,就能正常使用所有内置GraphX示例。
修正后的作业提交命令
把上述找到的jar包路径补到原命令的末尾,完整可运行的命令如下:
./bin/spark-submit \ --class org.apache.spark.examples.graphx.PageRankExample \ --master spark://<主节点对外IP>:7077 \ --deploy-mode cluster \ /你的Spark安装路径/examples/jars/spark-graphx_2.12-<对应Spark版本号>.jar
GCP集群部署注意事项:你当前搭建的是Standalone模式Spark集群,使用cluster部署模式时,不需要把指定的jar提前分发到所有Worker节点,Standalone集群会自动把本地路径下的jar上传到主节点的临时存储目录,再分发给各个运行任务的Worker,只需要保证主节点默认的
/tmp临时目录有足够磁盘空间即可正常运行作业。
内容的提问来源于stack exchange,提问作者FCLM
相关产品推荐
相关产品推荐

