繁体   English   中英

Spark 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM