更新时间:2024-11-08 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作业开发类