PySpark Spark-submit 命令带有 --files 参数错误

Ang*_*Sen 2 apache-spark apache-spark-sql pyspark spark-submit

我正在 Spark 2.3 集群中使用以下命令运行 PySpark 作业。

spark-submit 
--deploy-mode cluster 
--master yarn 
--files ETLConfig.json 
PySpark_ETL_Job_v0.2.py
Run Code Online (Sandbox Code Playgroud)

ETLConfig.json 有一个传递给 PySpark 脚本的参数。我在主块中引用此配置 json 文件,如下所示:

spark-submit 
--deploy-mode cluster 
--master yarn 
--files ETLConfig.json 
PySpark_ETL_Job_v0.2.py
Run Code Online (Sandbox Code Playgroud)

但是,该命令会引发以下错误。

No such file or directory: u'/tmp/spark-7dbe9acd-8b02-403a-987d-3accfc881a98/userFiles-4df4-5460-bd9c-4946-b289-6433-drgs/ETLConfig.json'
Run Code Online (Sandbox Code Playgroud)

我可以知道我的脚本有什么问题吗?我也尝试过使用SparkFiles.get()命令,但它也不起作用。

小智 6

您使用cluster部署模式。在这种情况下,--files路径不是指您用于提交的计算机上的本地路径,而是指用于生成驱动程序的工作线程上的本地路径,该驱动程序是集群中的任意节点。

如果您想以集群模式分发文件,您应该将这些文件存储在每个节点都可以访问的存储中。例如,您可以使用:

  • HTTP/HTTPS 网址。
  • HDFS 网址。

  • `--files` 指定提交作业的计算机上文件的路径,而不是驱动程序最终运行的 Yarn 节点。 (2认同)