Spark: сохранение отфильтрованных строк в FilterFunction - PullRequest
0 голосов
/ 03 октября 2019

Я написал функцию FilterFunction в Spark для фильтрации строк из набора данных. Он работает нормально, но новое требование заключается в том, что мне нужно сохранить все пропущенные строки в другом месте. Каков наилучший способ сделать это?

Моя цель состоит в том, чтобы я не проходил один и тот же набор данных дважды;один раз, чтобы отфильтровать строки, которые я хочу, и один раз, чтобы получить пропущенные строки.

Возможно ли это сделать? Я думаю, мне не нужно использовать FilterFunction, если есть другой способ. Пожалуйста помоги. Спасибо.

public class MyFilterFunction implements FilterFunction<Row> {

    @Override
    public boolean call(Row row) {
        boolean filter = false
        // Some business logic here
        return filter; 
    }
}

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Вы пытаетесь создать два набора данных из одного. Но API DataSet в настоящее время не предоставляет никаких преобразований (кроме случайного разбиения, которое не решит вашу проблему).

0 голосов
/ 03 октября 2019

Вместо функции фильтра напишите определяемую пользователем функцию, которая добавит дополнительный столбец 'partition' на основе условия фильтра. Фактические данные - данные, Фильтр данных - опущены. А затем напишите df, используя разделитель в столбце разделов.

+----+----------------+---------+
|col1|filtercondition |partition|
+----+----------------+---------+
|   a|            true|     data|
|   b|           false|  omitted|
+----+----------------+---------+
//Output
//hdfs://..../data/    //Actual Data
//hdfs://..../omitted/ //Filtered Data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...