我的RDD为1000个元素。我想从中取出100个元素,然后从初始RDD中删除这100个元素。但是尝试多种方法后,我找不到方法。
var part = dataRDD.take(100)
part是一个Array [String]
我要从100个dataRDD中删除100个元素。
var dataRDD = dataRDD.filter(row => row != part)
上面没有显示任何错误,但没有删除任何行。 dataRDD仍然具有相同的1000行。
能否请您指导如何进行这项工作。
答案 0 :(得分:3)
方法“ zipWithIndex”可用于拆分rdd:
val zipped = rdd.zipWithIndex()
val first100 = zipped.filter(_._2 < 100).keys
val remaining = zipped.filter(_._2 >= 100).keys
答案 1 :(得分:1)
您可以这样写:
var part = sc.parallelize(dataRDD.take(100))
val result = dataRDD.subtract(part)
result.foreach(x => foreach(x))
仅出于测试目的打印RDD
。
答案 2 :(得分:1)
您的代码很可能无法按预期工作,因为String
始终为Int
。在这种情况下,row != part
是Java数组之间的引用比较。