Spark结构化流中的复杂聚合

时间:2019-04-03 09:34:03

标签: apache-kafka spark-structured-streaming

我有来自Kafka流的以下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的元素的数组。

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

我正在考虑的是现在将此数据帧下沉到CSV文件中,以便我可以读取它,并进行第二次汇总。问题是这是一个很大的数据框,我想用一个管道完成。

那么,您对如何从值流中获取相关矩阵有一个想法吗?

0 个答案:

没有答案
相关问题