Бесконечный цикл JavaRDD <String>spark 1.6 - PullRequest
0 голосов
/ 20 мая 2018

я пытаюсь перебрать JavaRDD и найти элемент, применяя метод, который использует этот RDD, а затем я должен удалить это

вот мой код:


items=input.map(x->{

        min=getMin(input);

        return min;


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

но нет результата, кажется, бесконечный цикл, как я могу это исправить благодаря

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Из очень неопределенного описания, я полагаю, что вам потребуется что-то вроде следующего, при условии, что 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));

Sine ApacheSPARK Преобразования типа filter по своей природе ленивы, чтобы на самом деле получить значение, которое вам нужно было бы написать List collectedValues = items.collect(); Я бы, однако, настоятельно рекомендовал бы, чтобы .collect() никогда не поступал в производство, поскольку это действительно может быть очень опасно.

0 голосов
/ 20 мая 2018

Когда дело доходит до реализаций, подобных этой (такой же, как потоки Java8 или последовательности Kotlin), они реализуются ленивым образом, поэтому вам нужно выполнить терминальную операцию, только тогда работа будет выполнена.

Так что, если вы выполните filter и закончите, ничего не произойдет, поскольку вы не выполняли никаких операций с терминалом.Сделайте, например, first(), take(1), forEach(...) или любую другую терминальную операцию, вы можете найти их здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...