Я хочу заполнить (id, ArrayBuffer[ArrayBuffer[Double]])
из Dstream batch
.Мои входные данные имеют форму: "id, counter, value"
, и каждый идентификатор имеет более одного значения на счетчик в каждом СДР.Итак, что я хочу:
+-------+-----+------+----+
| |value1|value2|etc |
+-------------------------+
(id, |count1|0.2 |0.3 | |)
|count2|0.1 | | |
|etc | | | |
+------+------+------+----+
Когда я получаю RDD input
, я знаю измерение счетчика, но я не знаю, сколько значений я сохранил в каждом счетчике, чтобы заполнить следующую пустую ячейку.Я пытался создать Array[Array[Double]]
методом findNextEmpty()
, но я получил ArrayIndexOutOfBoundsException
, поэтому я пытаюсь ArrayBuffer
после этого.Есть ли способ динамически заполнить только одно из измерений 2d ArrayBuffer?
Мой код:
var example = inputRdd.transform(x =>
x.groupBy(_ (0))
.mapValues(x => x
.foldLeft( ArrayBuffer[ArrayBuffer[Double]]) { (a, b) => {
a(b(1).toInt)(??) += b(2).toDouble //Don't know the second dimension
}}))