Искровые и неденормализованные таблицы - PullRequest
0 голосов
/ 20 февраля 2019

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

Пример:

Формула: значение = (значение 2 года назад) + (значение текущего года) / (значение на 2 года вперед)

Table
+-------+-----+
|   YEAR|VALUE|
+-------+-----+
|   2015| 100 |
|   2016| 34  |
|   2017| 32  |
|   2018| 22  |
|   2019| 14  |
|   2020| 42  |
|   2021| 88  |
+-------+-----+

Dataset<Row> dataset ...
Dataset<Results> results = dataset.map(row -> {
   int currentValue = Integer.valueOf(row.getAs("VALUE")); // 2019   
   // non sense code just to exemplify    
   int twoYearsBackValue = Integer.valueOf(row[???].getAs("VALUE")); // 2016
   int twoYearsAheadValue = Integer.valueOf(row[???].getAs("VALUE")); // 2021
   double resultValue = twoYearsBackValue + currentValue / twoYearsAheadValue;
   return new Result(2019, resultValue);
});
Results[] results = results.collect();

Можно ли получить эти значения (принадлежащие другим строкам) без изменения формата таблицы (без денормализации, без сводок...) а также без сбора данных, или это полностью противоречит принципам Spark / BigData?

...