我试图通过应用使用此RDD的方法迭代JavaRDD并找到元素然后我应该删除
这是我的代码:
items=input.map(x->{
min=getMin(input);
return min;
})
.filter(x -> ! Domine(x, min));
但没有结果它似乎是一个无限循环 我该怎么办呢 谢谢
答案 0 :(得分:1)
当涉及到像这样的实现(与Java8流或Kotlin序列相同)时,它们以懒惰的方式实现,因此您需要执行终端操作,然后才能完成工作。
因此,如果您执行filter
并结束 - 由于您未执行任何终端操作,所以不会发生任何事情。例如first()
,take(1)
,forEach(...)
或任何其他终端操作,您可以找到它们here.
答案 1 :(得分:0)
从非常模糊的描述中,我相信您需要的内容类似于以下内容,假设input
的类型为JavaRDD<Row>
:
final Row min = input.min((row1, row2) -> {
// TODO: replace by some real comparator implementation
Integer row1value = row1.getInt(row1.fieldIndex("fieldName"));
Integer row2value = row2.getInt(row2.fieldIndex("fieldName"));
return row1value.compareTo(row2value);
});
items = input.filter(row -> !Domine(row, min));
像[{1}}这样的正弦Apache SPARK转换本质上是懒惰的,以实际检索您必须写入的值filter
但是,我强烈建议List collectedValues = items.collect();
从未真正进入生产,因为它确实非常危险。