regex - 如何删除包含 csv 数据的 RDD 中包含空值的条目?
问题描述
我正在尝试将 csv 文件中的值映射到 RDD,但由于某些字段为空,因此出现以下错误。
线程“主”org.apache.spark.SparkException 中的异常:作业因阶段失败而中止:阶段 0.0 中的任务 0 失败 1 次,最近一次失败:阶段 0.0 中丢失任务 0.0(TID 0,本地主机,执行程序驱动程序): java.lang.NumberFormatException:空字符串
以下是我正在使用的代码。
// Load and parse the data
val data = sc.textFile("data.csv")
val parsedData = data.map(s => Vectors.dense(s.split(',').map(_.toDouble))).cache()
有没有办法检查是否有空值?我想用 try catch 方法来做,但它似乎不起作用。
val parsedData = data.map(s => {
try {
val vector = Vectors.dense(s.split(',').map(_.toDouble))
}catch{
case e:NumberFormatException => println("Nulls somewhere")
}
(vector)
})
解决方案
您可以过滤掉空的项目,只需将filter
方法添加到您的流中:
val parsedData = data.map(s => Vectors.dense(s.split(',').filter(!_.isEmpty).map(_.toDouble))).filter(_.size != 0)
这样,任何空行都会导致 empty Vector
,可以进一步过滤。
推荐阅读
- android - 单击图像时如何刷新 RecyclerView?
- python - cv2.polylines 可以返回形成线的每个点的坐标吗?
- python - 使用 python 将 Azure 输出到 csv
- c# - 阅读列表
通过 C# 中的 Newtonsoft 从 Json - powershell - 如何从批处理文件以管理员权限和高优先级/实时启动进程?
- javascript - 仅使用 javascript 的文本框日期验证
- flutter - Dart 随机唯一数字
- asp.net-mvc - 在 mvc Rpoject 中找不到文件 loader.cs
- javascript - 使用 keyup 事件时,Ajax 帖子被触发两次
- python - 有没有办法在 Python 中同时执行多个 while 循环?