scala - 按字段 Scala 中的值过滤 rdd 行

标签 scala apache-spark

我有一个具有以下结构的 csv:

header,header,header,header,header
val1, val2, val3, val4, val5
val1, val2, null, val4, val5
val1, val2, val3, null, val5



我需要做的是过滤掉标题和在特定位置包含空值的数据行(可以在 val3 但不是 val4 处为空)。我做了一个 rdd 并在逗号上拆分行,我希望像访问数组的索引位置一样访问每一行。但我不知道如何进行比较。我可以使用以下方法提取字段:

rdd.map(values=>(values(2))



你如何进行比较?特别是“不包含”。我认为有一种比较方法可用,或者这个问题是否需要元组和 !contain?

最佳答案

假设您已经定义了用于包装这些值的类型,让我们说:

case class Record(val1: String, val2: Option[String], val3: String, val4: Option[String])

val rdd: RDD[Record] = ...
rdd.filter(record => record.val2.isDefined && record.val4.isDefined)

我希望这是有帮助的。

关于scala - 按字段 Scala 中的值过滤 rdd 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42770861/

相关文章:

apache-spark - spark-submit,如何指定log4j.properties

sql - 如何将 String 值转换(或强制转换)为 Integer 值?

apache-spark - 如何从 PySpark MultilayerPerceptronClassifier 获取分类概率?

java - 在平等规则之间切换

xml - 在 Scala 中将 XML 文字作为参数编写

java - 无法识别的 VM 选项 'AggressiveOpts'

apache-spark - 如何切换 Zeppelin 中的 Spark 版本以使用 Spark 3.x

apache-spark - 无法在 ES 6.x 及更高版本中对索引/更新请求使用时间戳。请删除 [es.mapping.timestamp] 设置

scala - 将当前项目设置为 default-6c6f02(在构建文件 :/home/user_name/Videos/中

Scala Lift - 如何启动项目