无限循环JavaRDD <string> spark 1.6

时间:2018-05-20 09:26:20

标签: java apache-spark

我试图通过应用使用此RDD的方法迭代JavaRDD并找到元素然后我应该删除

这是我的代码:

items=input.map(x->{

        min=getMin(input);

        return min;


    })
    .filter(x ->  ! Domine(x, min)); 

但没有结果它似乎是一个无限循环 我该怎么办呢 谢谢

2 个答案:

答案 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();从未真正进入生产,因为它确实非常危险。