Комплексные агрегаты в искровом структурированном потоке - PullRequest
0 голосов
/ 03 апреля 2019

У меня следующий json из потока Кафки

[{timestamp: 2019-01-01T00:00:00z, id:A, value: 3.15}
{timestamp: 2019-01-01T00:00:00z, id:B, value: 0.32}
{timestamp: 2019-01-01T00:00:00z, id:C, value: 1.75}
{timestamp: 2019-01-01T00:00:00z, id:D, value: 2.20}
{timestamp: 2019-01-01T00:00:10z, id:A, value: 2.05}
{timestamp: 2019-01-01T00:00:10z, id:B, value: 0.01}
{timestamp: 2019-01-01T00:00:10z, id:C, value: 3.55}
{timestamp: 2019-01-01T00:00:10z, id:D, value: 1.92}] ...

Моя конечная цель - вычислить корреляцию между этими переменными и получить что-то вроде этого:

+--------------------+-------+
|element 1| element 2|   corr|
+--------------------+-------+
|        A|         A|    1.0|
|        A|         B|   0.98|
|        A|         D|   0.02|
|        B|         B|    1.0|
|        B|         C|   0.45|
+--------------------+-------+
...

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

Я экспериментировал с преобразованиями, но лучшее, что я мог получить, это полу-развернутая таблица, где [id] - это массив элементов, принадлежащих этому конкретному идентификатору.

+---------+-----+----+----+----+
|       id|    A|   B|   C|   D|
+---------+-----+----+----+----+
|        A|  [A]|    |    |    |
|        B|     | [B]|    |    |
|        C|     |    | [C]|    |
|        D|     |    |    | [D]|
+---------+-----+----+----+----+
...

То, что я сейчас рассматриваю, это перенос этого фрейма данных в файл CSV, чтобы я мог его прочитать, собрать во второй раз. Проблема в том, что это большой массив данных, и я хотел бы сделать это с одним конвейером.

Итак, у вас есть представление о том, как я могу получить корреляционную матрицу из потока значений?

...