scala - Spark:spark.files 与文件
问题描述
在文档中有spark.files
文字:
Comma-separated list of files to be placed in the working directory of each executor. Globs are allowed.
--files
和from一样spark-submit
吗?
我尝试使用--conf spark.files
with#
进行重命名,但似乎没有用。
有人会知道吗?
解决方案
您应该尝试使用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。
通过 Client.scala 的部署功能将指定的文件--files, spark.yarn.dist.files
复制到 executors 节点中,其中片段被正确处理。