apache-spark - Spark - 处理 CSV 文件中的空白值
问题描述
假设我有一个简单的管道分隔文件,缺少值:
A|B||D
我将其读入数据框:
val foo = spark.read.format("csv").option("delimiter","|").load("/path/to/my/file.txt")
缺少的第三列不是空值,而是字符串为空:
+-----------+----+
|_c0|_c1| _c2|_c3|
+-----------+----+
|a |b |null|c |
我希望能够控制 Spark 对缺失值的处理。根据CSV Documentation,有一个nullValue
选项:
nullValue:表示空值的字符串,任何匹配该字符串的字段都会在DataFrame中设置为空值。
但由于我在那里没有任何价值,我似乎无法以这种方式控制它。
没有测试我读入的每个文件的每个字段,有没有办法控制火花对这些空白的作用?例如,将其替换为“N/A”。
如果相关,我们使用的是 Spark 2.1。
解决方案
nullValue
和选项与您的emptyValue
期望相反 - 它们允许您指定如果在源数据中遇到的值,则应将其转换为null
或""
(分别)在结果数据框中。例如,如果您的输入是
a|b|N/A|d
你设置
option("nullValue", "N/A")
你会再次结束
+-----------+----+
|_c0|_c1| _c2|_c3|
+-----------+----+
|a |b |null|c |
更重要的是,Spark 在DataFrameNaFunctions类中包含处理空值的函数。例如,df.na.fill("N/A")
将null
字符串列中的所有实例替换为"N/A"
.
推荐阅读
- swift - 如何使用 Calendar.current.startOfDay 修复由于 Core Data 中的时区导致的错误日期?
- azure - 导出零行数据时,有没有办法阻止 Azure ML 抛出错误?
- swift - 如何在 xcassets 文件中获取图像的 url
- c++ - 通过 region->put 更新缓存时,无法将 afterCreate 事件转换为 PdxInstance
- ios - React Native MapView 未在 iOS 独立版本上显示
- reactjs - 首次渲染时无法从 useEffect 访问状态挂钩到其他函数
- ontology - SSN 本体 RDF 中似乎故意遗漏了一些子类。有没有办法导入完整的 SSN 本体?
- c# - 如何将 C# 中的方法指针传递给 C 库?
- python - 我想清除一个文本文件并在 python 中添加两个文本行
- python - 为什么我无法访问管理面板中的模型