
# Spark jar 如何读取上传文件
Spark可以使用SparkFiles读取 ---file中提交上来的文件的本地路径，即：SparkFiles.get("上传的文件名")。
![](https://support.huaweicloud.com/dli_faq/public_sys-resources/note_3.0-zh-cn.png)
- Driver中的文件路径与Executor中获取的路径位置是不一致的，所以不能将Driver中获取到的路径作为参数传给Executor去执行。
- Executor获取文件路径的时候，仍然需要使用SparkFiles.get("filename")的方式获取。
- SparkFiles.get()方法需要spark初始化以后才能调用。
 
图1添加其他依赖文件   
![](https://support.huaweicloud.com/dli_faq/zh-cn_image_0000001442646205.png "点击放大")
代码段如下所示
```
package main.java
 
import org.apache.spark.SparkFiles
import org.apache.spark.sql.SparkSession
 
import scala.io.Source
 
object DliTest {
  def main(args:Array[String]): Unit = {
    val spark = SparkSession.builder
      .appName("SparkTest")
      .getOrCreate()
 
    // driver 获取上传文件
    println(SparkFiles.get("test"))
 
    spark.sparkContext.parallelize(Array(1,2,3,4))
         // Executor 获取上传文件
      .map(_ => println(SparkFiles.get("test")))
      .map(_ => println(Source.fromFile(SparkFiles.get("test")).mkString)).collect()
  }
}
```
