【问题标题】:How can i do "union" on multiple spark structured streaming dataframes?如何在多个 Spark 结构化流数据帧上进行“联合”?
【发布时间】:2021-11-15 10:18:30
【问题描述】:

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

例如:

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

其中 spark=sparksession socket_streamer = spark.readstream

那我就做:

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

然后我尝试 writeStream Dataframe。

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

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

谢谢你!

【问题讨论】:

    标签: pyspark apache-kafka-streams spark-structured-streaming


    【解决方案1】:

    df1 和 df2 是否具有相同的结构? Spark 中的 Union 函数按位置(而不是按名称)解析列。

    要按名称联合,请使用:

    df1.unionByName(df2, allowMissingColumns=True)
    

    (可从 Spark 3.1.X 获得)

    【讨论】:

      猜你喜欢
      • 2019-08-09
      • 2019-03-30
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 2019-02-17
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多