Pyspark 无法在spark结构化流媒体中写入聚合输出

Pyspark 无法在spark结构化流媒体中写入聚合输出,pyspark,spark-streaming,spark-structured-streaming,Pyspark,Spark Streaming,Spark Structured Streaming,我刚刚开始使用spark结构化流媒体,所以只是尝试一些手动操作。在汇总我的数据时;我无法将其写入csv文件。 我尝试了以下不同的组合,但尚未实现写入操作 我的样本数据是 colum,values A,12 A,233 B,232 A,67 B,5 A,89 A,100 作为流数据帧读取 userSchema = StructType([ StructField("colum", StringType()), StructField("values", IntegerType(

我刚刚开始使用spark结构化流媒体,所以只是尝试一些手动操作。在汇总我的数据时;我无法将其写入csv文件。 我尝试了以下不同的组合,但尚未实现写入操作

我的样本数据是

colum,values
A,12
A,233
B,232
A,67
B,5
A,89
A,100
作为流数据帧读取

userSchema = StructType([
     StructField("colum", StringType()),
    StructField("values", IntegerType())
])

line2 = spark \
.readStream \
.format('csv')\
.schema(userSchema)\
 .csv("/data/location")
我在做以下加积计算

 save=line2.groupBy("colum").count()
预期产量为

+-----+-----+
|colum|count|
+-----+-----+
|B    |2    |
|A    |5    |
|colum|1    |
+-----+-----+
情景1: 错误:在没有水印的流数据帧/数据集上存在流聚合时,不支持追加输出模式

备注:由于数据中没有时间戳,因此不可能添加水印

情景2: 错误::org.apache.spark.sql.AnalysisException:数据源csv不支持完整输出模式

情景3: 错误:org.apache.spark.sql.AnalysisException:数据源csv不支持更新输出模式

情景4: 错误:org.apache.spark.sql.AnalysisException:数据源parquet不支持更新输出模式

情景5: 注释:在位置处未生成任何输出

情景6: 注释:未生成任何输出

情景7: 注释:未生成任何输出


请向我建议适当的配置。

您试图使用此流式查询计算什么?嗨,Jacek,我已经更新了我的问题,请看一看,为什么您要使用结构化流式处理这样一个简单的情况,例如通过单个CSV文件计算聚合?这是一个玩具示例。在我的用例中,我将进行大量的聚合,并将其实时保存以供进一步的下游管道使用。那么,只是检查一下可行性,你能做到吗?我建议发布答案,这样,面对类似问题的用户会发现它很有用。
 save.writeStream.format("csv").queryName("a").outputMode("append").option("path", "/xyz/saveloc").option("checkpointLocation", "/xyz/chkptloc").start()
save.writeStream.format("csv").queryName("a").outputMode("complete").option("path", "/xyz/saveloc").option("checkpointLocation", "/xyz/chkptloc").start()
save.writeStream.format("csv").queryName("a").outputMode("update").option("path", "/xyz/saveloc").option("checkpointLocation", "/xyz/chkptloc").start()
save.writeStream.format("parquet").queryName("a").outputMode("update").option("path", "/xyz/saveloc").option("checkpointLocation", "/xyz/chkptloc"").start()
save.writeStream.format("console").queryName("a").outputMode("complete").option("path", "/xyz/saveloc").option("checkpointLocation", "/xyz/chkptloc"").start()
save.writeStream.format("memory").queryName("a").outputMode("complete").option("path", "/xyz/saveloc").option("checkpointLocation", "/xyz/chkptloc"").start()
save.writeStream.format("memory").queryName("a").outputMode("update").option("path", "/xyz/saveloc").option("checkpointLocation", "/xyz/chkptloc"").start()