Spark 读取路径/文件名中包含空格的 csv 文件时出错

2024-02-11

我想使用 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 tableNameSQL 中的命令或通过重新创建涉及的数据集/数据帧。”

我签入 s3 并且该文件确实存在,但路径有一个常规空格而不是%20.

知道如何处理这个问题吗?我无法更改路径,因为它们是由我无法修改的组件生成的。


这是典型的url编码问题。来自 S3 的 URL 使用 %20 进行编码。然而,spark 错误地解码了它。

与此相关的有两个问题

  1. https://jira.apache.org/jira/browse/SPARK-23148 https://jira.apache.org/jira/browse/SPARK-23148
  2. https://jira.apache.org/jira/browse/SPARK-24320 https://jira.apache.org/jira/browse/SPARK-24320

该问题已在spark2.3版本中得到解决。如果您使用的是旧版本

解码 url 后需要转义文件名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 读取路径/文件名中包含空格的 csv 文件时出错 的相关文章

随机推荐

  • 使用 jquery.each() 循环创建对象键

    我正在 javascript 中创建一个命名空间来循环遍历表单并创建一个对象 调用该函数的目标是循环遍历所有特定表单类型并构造一个对象 该对象的键是 html 输入的名称 值是其当前值 但是 它始终返回未定义 任何帮助将不胜感激 get f
  • 尽管符号存在,但 CMake 中的符号查找失败

    我正在尝试使用 CMake 检查符号 getaddrinfo a 是否存在 list APPEND CMAKE REQUIRED DEFINITIONS D GNU SOURCE check symbol exists getaddrinf
  • 如何用C++扩展TCL?

    我可以编写可编译并用于扩展 TCL 的 C 代码 我不是指调用可执行文件 吗 我可以描述一些类 函数并通过调用已编译的 so 或 a 文件 C 代码在我的 TCl 代码中使用它们吗 如果是 请示意性地向我解释一下它是如何完成的 http c
  • CodeFirst 相对于 Database First 的优势是什么?

    我正在观看 EF 4 1 的一些视频和教程 我不明白 CodeFirst 的任何好处 除了一些 DB 非常小的 3 4 个表并且我懒得先创建 DB 的情况 大多数情况下 迄今为止最好的方法是在某种数据库编辑器中创建数据库 这肯定比在实体模型
  • Python:如何用常规属性替换属性?

    基类有这样的 def management form self code here return form management form property management form 在我的派生类中 我试图这样写 self manag
  • CSS无冲突样式

    创建 CSS 样式表的无冲突版本的好方法是什么 假设您有一堆代码 其中的类与 Bootstrap 的类重叠 这是否有效 添加一个class bootstrap 到应应用引导样式的祖先元素 然后更改bootstrap css为每个添加前缀ru
  • JXA:从 CoreServices 访问 CFString 常量

    JXA https developer apple com library mac releasenotes InterapplicationCommunication RN JavaScriptForAutomation Articles
  • XML 数据类型方法“value”的参数 1 必须是字符串文字

    我已经读过SO XML 数据类型方法 值 必须是字符串文字 https stackoverflow com q 11029674 62576但我的问题有点不同 我在一个变量中有一些 xml 我想将其分开并给出一个路径 最初我尝试过这个 de
  • 带有组的pivot_longer并删除列名前缀[重复]

    这个问题在这里已经有答案了 我正在尝试使用pivot longer 将数据帧从宽格式转换为长格式 原始数据框是 df start lt structure list amprise 0 015 ampfull 0 005 ampfall 0
  • 桶的索引计数

    所以 这是我的小问题 Let s say I have a list of buckets a0 an which respectively contain L lt c0 cn lt H items I can decide of the
  • 使用 tastypie 的 REST url

    我在 django 应用程序中使用 tastypie 并尝试让它映射像 api booking 2011 01 01 这样的 URL 该 URL 映射到 URL 中具有指定时间戳的 Booking 模型 该文档没有说明如何实现这一点 您想要
  • 如何在离开用户界面状态时停止 $interval?

    Angular UI 路由器 在状态控制器中使用 interval 如下所示 scope Timer null scope startTimer function scope Timer interval scope Foo 30000 s
  • 使用 cmd.exe /c 相对于根本不使用 cmd 的优点

    如果我在 C 中运行一个进程 使用 cmd c 比直接运行进程有什么好处吗 Ex ProcessStartInfo info new ProcessStartInfo cmd exe info Arguments c application
  • 区分键盘的真实按键和虚拟按键

    我正在用 C 编写一个程序 它必须模拟键盘的按键命令 问题是 我需要模拟 真实 的键盘按钮点击 而不是假的 例如 据我了解 当用户按下键盘上的任何按钮时 信号通过 USB 发送 然后通过键盘驱动程序继续 当使用 API SendInput
  • 将 async/await 与 DataReader 一起使用? (没有中间缓冲区!)

    我的目标很简单 我想做异步 I O 调用 使用 async wait 但是 不使用 DataFlow 依赖项 就像这个答案一样 https stackoverflow com a 13148683 859154 没有中间缓冲区 不喜欢这个答
  • 在 WPF Frame 控件中关闭导航页面声音

    我在 WPF 窗口中有一个 Frame 元素 并且应用程序中的所有内容都是使用 Frame Navigate 加载的 但是 当导航到新页面时 默认会播放该声音 它与 Internet Explorer 中播放的声音相同 有什么方法可以从应用
  • Visual Studio 2015 中的默认日期时间选择器仅显示日期选择器,不允许选择时间

    我正在使用 Visual Studio 2015 并且在我的 MVC5 应用程序中使用其默认日期时间选择器 我在显示日期时间选择器时遇到问题 它仅显示日期选择器而不显示时间选择器 但我也需要时间选择器 这是我在模型中的 datetimepi
  • ValueError:使用 pandas hub_table 不允许使用负尺寸

    我正在尝试制作项目 项目协作推荐代码 我的完整数据集可以找到here https drive google com open id 0B7KsvcvcTJ4DeU1IRE93ZHVnRGM 我希望用户成为行 项目成为列 评级成为值 我的代码
  • .NET 中的串行端口通信

    我正在使用 C 从串行端口接收数据 但存在一些问题 我对此很陌生 所以我需要一些帮助 首先我想知道哪些函数是事件驱动的 ReadExisting Read Readbyte Readchar ReadLine Readto 如何从该端口的输
  • Spark 读取路径/文件名中包含空格的 csv 文件时出错

    我想使用 Spark 读取 csv 文件 文件的路径有空格 Spark 正在将空格替换为 20 这是代码 val tmpDF spark read format com databricks spark csv option multiLi