当前位置: 首页 > 知识库问答 >
问题:

如何删除包含csv数据的RDD中包含空值的条目?

太叔小云
2023-03-14

我正在尝试将csv文件中的值映射到RDD,但我收到以下错误,因为某些字段为空。

线程"main"中的异常org.apache.spark.SparkException:由于阶段失败而中止的作业:阶段0.0中的任务0失败1次,最近的失败:阶段0.0中丢失的任务0.0(TID 0,localhost,执行驱动程序):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()

有没有办法检查是否有空值?我曾想过用一种“试抓”的方法来做,但它似乎不起作用。

val parsedData = data.map(s => {

  try {
    val vector = Vectors.dense(s.split(',').map(_.toDouble))
  }catch{
    case e:NumberFormatException => println("Nulls somewhere")
  }
  (vector)
})

共有1个答案

慕宏峻
2023-03-14

您可以过滤掉空项,只需将过滤方法添加到流中:

val parsedData = data.map(s => Vectors.dense(s.split(',').filter(!_.isEmpty).map(_.toDouble))).filter(_.size != 0)

这样任何空行都会导致空的Vector,可以进一步过滤。

 类似资料:
  • 我有一个,它是通过解析一些excel电子表格创建的。具有空单元格的列。例如,下面是该列的频率输出,32320条记录缺少租户的值。 我试图删除缺少租户的行,但是选项无法识别缺少的值。 该列具有数据类型"Object"。这案子是怎么回事?如何删除租户失踪的记录?

  • 我正在尝试删除此df中的所有行,其中“DB Serial”列包含字符*: 我正在使用: 但我得到这个错误:

  • 问题内容: 基本上,我正在做一些数据分析。我以numpy.ndarray的形式读取数据集,但缺少了某些值(要么只是不在那里,要么就是被写为“ ”的字符串)。 我想清除包含这样任何条目的所有行。我该如何用一个numpy的ndarray? 问题答案: 并将其重新分配给。 说明:返回一个相似的阵列,其中,在其他地方。降低了阵列与逻辑对整个行,操作反相并从原始数组只选择行,其具有括号内。

  • 问题内容: 我目前有一个数据框,其中包含以1和0作为值的列,我想遍历这些列并删除仅由0组成的列。到目前为止,这是我尝试过的: 在哪几年是我正在分析的不同年份的数据帧的列表,其中包括其中包含一个的列,而零则是包含所有零的列的列表。是否有更好的方法根据条件删除列?由于某些原因,我必须检查一列是否也位于零列表中,并将它们从零列表中删除,以获得所有零列的列表。 问题答案: df.loc[:, (df !=

  • 我有一个熊猫数据框,看起来像这样(但实际上要大得多): 我只想删除包含-500(2)和整列(f和g)的整行。我的数据框是自动生成的,我还不知道哪些列和行包含-500。 有人知道怎么做吗? 谢谢

  • 假设我有一张工作表--第一张--有5000多行(例如,每行“a”-“H”)。 在另一个工作表--第2号--中,我有一个“to-remove-list”--一个包含400个值的单列“a”,每个值包含字母数字字符串(例如:xxx1234)。 如果第'e'列包含“to-remove-list”(第2页的第'a'列)中的任何值,则必须删除第1页中的每一行。 删除整行,我的意思是删除该行并向上移动(不离开空