如何获取上传文件的路径

ore*_*tis 5 scala apache-spark google-cloud-dataproc

我正在谷歌云上运行一个火花集群,我上传了每个作业的配置文件.使用submit命令上传的文件的路径是什么?

在下面的示例中,如何Configuration.properties在初始化SparkContext之前读取文件?我正在使用Scala.

 gcloud dataproc jobs submit spark --cluster my-cluster --class MyJob  --files  config/Configuration.properties --jars my.jar  
Run Code Online (Sandbox Code Playgroud)

use*_*411 11

使用SparkFiles机制(--files参数SparkContext.addFile)方法分发的文件的本地路径可以使用SparkFiles.get以下方法获得:

org.apache.spark.SparkFiles.get(fileName)
Run Code Online (Sandbox Code Playgroud)

您还可以使用SparkFiles.getRootDirectory以下命令获取根目录的路径:

org.apache.spark.SparkFiles.getRootDirectory
Run Code Online (Sandbox Code Playgroud)

您可以将这些与标准IO实用程序结合使用来读取文件.

如何在初始化SparkContext之前读取文件Configuration.properties?

SparkFiles由驱动程序分发,在上下文初始化之前无法访问,并且首先要分发,必须可以从驱动程序节点访问.因此,问题的这一部分仅取决于您将用于将文件公开给驱动程序节点的存储类型.

  • 我尝试在2.4.4中创建sparkSession后打开这个文件。使用 new java.io.File() 无法打开该文件。当以流方式打开文件时,它总是抛出 FileNotFound 异常。 (3认同)