Как группировать последовательности с одинаковой регулярностью, используя искру - PullRequest
0 голосов
/ 10 ноября 2018

Чтобы упростить входные параметры и код, я сгенерировал список ввода (в реальном времени это много csv файлов с цифрами внутри). Все входные числа должны быть сгруппированы по единому правилу регулярности. Числа, которые нельзя описать ни одним правилом регулярности, должны быть удалены из результата вывода.

пример ввода:

[1010,1020,1050,1030,1022,1880,1940,1900,1920,2010,3100]

пример вывода результата:

[[1010,1020,1030,1050],[1880,1900,1920,1940]]

[1010,1020,1030,1050] имеет шаг приращения 10, а последовательность имеет исключение (1040). [1880,1900,1920,1940] имеет шаг приращения 20, последовательность без исключений.

Исходное решение с spark на java

public static void main(String[] args) throws Exception {
    Logger.getLogger("org").setLevel(Level.OFF);
    SparkConf conf = new SparkConf().setAppName("reduce").setMaster("local[*]");
    JavaSparkContext sc = new JavaSparkContext(conf);

    List<Integer> inputIntegers = Arrays.asList(1010,1020,1050,1030,1022,1880,1940,1900,1920,2010,3100);
    JavaRDD<Integer> integerRdd = sc.parallelize(inputIntegers);
    System.out.println("Check count of objects: " + integerRdd.count());

    System.out.println(integerRdd.collect());
    JavaRDD<Integer> sorted = integerRdd.sortBy(x -> x, true, 1);
    System.out.println("Check sorted collection:");
    System.out.println(sorted.collect());
   /* TODO
   - enrich data with increment step
   - group by increment step  (increment step should be calculated in run time)
   - filter out single values 
   */
}

Я думаю, что мне нужно использовать шаг приращения, но я не знаю, как управлять данными из разных RDD (в случае использования spark), чтобы иметь возможность сохранить шаг приращения в текущей искре RDD

У кого-нибудь есть идеи, как решить мою проблему с искрой или как ее можно решить с помощью различных инструментов?

приписка

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

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