更新时间:2022-11-09 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()
  }
}

作业开发 所有常见问题

more