更新时间:2024-11-06 GMT+08:00
Spark jar 如何读取上传文件
Spark可以使用SparkFiles读取 –-file中提交上来的文件的本地路径,即:SparkFiles.get("上传的文件名")。
- Driver中的文件路径与Executor中获取的路径位置是不一致的,所以不能将Driver中获取到的路径作为参数传给Executor去执行。
- Executor获取文件路径的时候,仍然需要使用SparkFiles.get(“filename”)的方式获取。
- SparkFiles.get()方法需要spark初始化以后才能调用。
图1 添加其他依赖文件
代码段如下所示
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() } }
父主题: Spark作业开发类