如何透视pyspark流数据帧
我在pyspark结构化流媒体中接收流媒体数据,我需要对它们进行透视,以便我可以从该数据中获得一行数据 进入我的群集的数据结构是:如何透视pyspark流数据帧,pyspark,pivot,spark-streaming,spark-structured-streaming,pyspark-dataframes,Pyspark,Pivot,Spark Streaming,Spark Structured Streaming,Pyspark Dataframes,我在pyspark结构化流媒体中接收流媒体数据,我需要对它们进行透视,以便我可以从该数据中获得一行数据 进入我的群集的数据结构是: { "version": 1.0.0, "message": { "data": [{ "name": "name_1", "value": 1.0}, ... { "name": "name_2", "value": 2.0}] } } 我的代码如下: dfStreaming = spark \ .r
{
"version": 1.0.0,
"message": {
"data": [{
"name": "name_1",
"value": 1.0},
...
{
"name": "name_2",
"value": 2.0}]
}
}
我的代码如下:
dfStreaming = spark \
.readStream \
.format("eventhubs") \
.options(**optionConf()) \
.load() \
.select(explode("message.data").alias("data")) \
.select(("data.*")) \
我在dataframe中得到以下结果:
|---------------------|------------------|
| Name | Value |
|---------------------|------------------|
| Name_1 | 1.0 |
|---------------------|------------------|
| Name_2 | 2.0 |
|---------------------|------------------|
但我需要以下结构(它实际上是表的轴心):
流式数据帧上的透视是不允许的,但我认为应该有一个解决方案
非常感谢你的帮助 解决方案是添加几个聚合,以确定何时重新创建数据帧的行
dfStreaming = spark \
.readStream \
.format("eventhubs") \
.options(**optionConf()) \
.load() \
.select(explode("message.data").alias("data")) \
.select(("data.*")) \
.selectexpr(["sum(case when Name=Name_of_desired_column then Value else null) as Name_of_desired_column"])
dfStreaming = spark \
.readStream \
.format("eventhubs") \
.options(**optionConf()) \
.load() \
.select(explode("message.data").alias("data")) \
.select(("data.*")) \
.selectexpr(["sum(case when Name=Name_of_desired_column then Value else null) as Name_of_desired_column"])