文档中有spark.files
的文字:
Comma-separated list of files to be placed in the working directory of each executor. Globs are allowed.
与--files
中的spark-submit
一样吗?
我尝试将--conf spark.files
与#
一起使用来重命名,但似乎没有用。
有人知道吗?
答案 0 :(得分:0)
您应该尝试使用spark.yarn.dist.files
属性
val spark = SparkSession
.builder()
.enableHiveSupport()
.getOrCreate()
SparkContext是在实例化 spark 对象时创建的。在SparkContext实例化期间,如果addFile
属性配置为将要下载的文件添加到所有执行者节点,则调用spark.files
方法。
def addFile(path: String, recursive: Boolean): Unit = {
val uri = new Path(path).toUri
val schemeCorrectedPath = uri.getScheme match {
case null | "local" => new File(path).getCanonicalFile.toURI.toString
case _ => path
}
val hadoopPath = new Path(schemeCorrectedPath)
....
}
例如,如果路径值为 localfile.txt#renamed.txt ,则hadoopPath会转换为 localfile.txt%23renamed.txt ,该字符将“# ”作为文件路径的一部分,而不是片段。因此它将引发FileNotFoundException。
--files, spark.yarn.dist.files
中指定的文件通过Client.scala的 deploy 功能复制到执行程序节点中,其中片段得到了正确处理。