У меня есть входные линии, как показано нижеСпарк потоковой группы по пользовательской функции
t1, file1, 1, 1, 1
t1, file1, 1, 2, 3
t1, file2, 2, 2, 2, 2
t2, file1, 5, 5, 5
t2, file2, 1, 1, 2, 2
и я хочу, чтобы достичь выхода, как показано ниже строк, который представляет собой вертикальное сложение соответствующих чисел.
file1 : [ 1+1+5, 1+2+5, 1+3+5 ]
file2 : [ 2+1, 2+1, 2+2, 2+2 ]
Я в контексте искры потокового и я с трудом пытаясь понять, каким образом агрегировать по имени файла.
Кажется, мне нужно будет использовать что-то вроде ниже, я не уверен, как добраться до правильного синтаксиса. Любые входы будут полезны.
myDStream.foreachRDD(rdd => rdd.groupBy())
или myDStream.foreachRDD(rdd => rdd.aggregate())
Я знаю, как сделать вертикальную сумму массива данных чисел, но я не уверен, как кормить эту функцию агрегатора.
def compute_counters(counts : ArrayBuffer[List[Int]]) = {
counts.toList.transpose.map(_.sum)
}