我想对连接到kafka主题的多个结构化流媒体数据帧进行union
操作,以便在同一时刻对它们进行水印处理。
例如:
df1=socket_streamer(spark,topic1)
df2=socket_streamer(spark,topic2)
其中spark=火花塞和socket_streamer=火花读取流
然后我做:
Dataframe=df1.union(df2)
Dataframe=Dataframe.withWatermark("timestamp","5 minutes")
然后我尝试写入流数据帧。
问题是:union
只显示第一个接收行的df
。
你知道吗,让工会收到我的所有数据,或者我如何在多个数据帧上应用相同的水印?
坦克你!
df1和df2有相同的结构吗?spark中的并集函数按位置(而不是按名称(解析列。
要按名称联合,请使用:
df1.unionByName(df2, allowMissingColumns=True)
(可从Spark 3.1.X获得(