我想使用 Spark 读取 csv 文件。文件的路径有空格。 Spark 正在将空格替换为%20
.
这是代码:
val tmpDF = spark.read.format("com.databricks.spark.csv").option("multiLine", value = true).option("quote", "\"").option("escape", "\"").option("header", "true").option("inferSchema", "true").option("delimiter", delimiter).load(filename)
tmpDF.show(10)
所以当tmpDF.show(10)
方法执行时抛出以下错误:
java.io.FileNotFoundException: No such file or directory: s3://{bucket_name}/all/Proposal%20and%20pre-approval/filen_name_20190826-215950.csv
底层文件可能已更新。您可以通过运行显式使 Spark 中的缓存无效REFRESH TABLE tableName
SQL 中的命令或通过重新创建涉及的数据集/数据帧。”
我签入 s3 并且该文件确实存在,但路径有一个常规空格而不是%20
.
知道如何处理这个问题吗?我无法更改路径,因为它们是由我无法修改的组件生成的。
这是典型的url编码问题。来自 S3 的 URL 使用 %20 进行编码。然而,spark 错误地解码了它。
与此相关的有两个问题
- https://jira.apache.org/jira/browse/SPARK-23148 https://jira.apache.org/jira/browse/SPARK-23148
- https://jira.apache.org/jira/browse/SPARK-24320 https://jira.apache.org/jira/browse/SPARK-24320
该问题已在spark2.3版本中得到解决。如果您使用的是旧版本
解码 url 后需要转义文件名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)