[英]Spark Scala Delete rows in one RDD based on columns of another RDD
[英]Spark RDD take and delete rows
我有1000个元素的RDD。 我想从中取出100个元素,然后从初始RDD中删除这100个元素。 但是尝试多种方法后,我找不到方法。
var part = dataRDD.take(100)
部分是一个数组[String]
我想从100个dataRDD中删除100个元素。
var dataRDD = dataRDD.filter(row => row != part)
上面没有显示任何错误,但没有删除任何行。 dataRDD仍然具有相同的1000行。
能否请您指导如何进行这项工作。
方法“ zipWithIndex”可用于拆分rdd:
val zipped = rdd.zipWithIndex()
val first100 = zipped.filter(_._2 < 100).keys
val remaining = zipped.filter(_._2 >= 100).keys
您可以这样写:
var part = sc.parallelize(dataRDD.take(100))
val result = dataRDD.subtract(part)
result.foreach(x => foreach(x))
打印RDD
仅用于测试目的。
很可能您的代码无法按预期工作,因为row != part
始终为true
。 在这种情况下, !=
是来自Java的数组之间的引用比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.