我如何在多个 spark 结构化流数据帧上执行 "union"?

How can i do "union" on multiple spark structured streaming dataframes?

我想对连接到 kafka 主题的多个结构化流数据帧进行 union 操作,以便同时为它们添加水印。

例如:

df1=socket_streamer(spark,topic1)
df2=socket_streamer(spark,topic2)

其中 spark=sparksession and socket_streamer = spark.readstream

那我会做:

Dataframe=df1.union(df2)
Dataframe=Dataframe.withWatermark("timestamp","5 minutes")

然后我尝试写Stream Dataframe。

问题是:union 仅显示第一个 df 接收行。

你有什么想法,让联盟收到我的所有数据,或者我如何在多个数据帧上应用相同的水印?

加油!

df1和df2结构相同吗? spark 中的联合函数按位置(而不是按名称)解析列。

要按名称并集,请使用:

df1.unionByName(df2, allowMissingColumns=True)

(可从 Spark 3 获得。1.X)