如何透视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

我在pyspark结构化流媒体中接收流媒体数据,我需要对它们进行透视,以便我可以从该数据中获得一行数据

进入我的群集的数据结构是:

{
"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"])