#pyspark #apache-kafka-streams #spark-structured-streaming
Вопрос:
Я хотел бы выполнить 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")
затем я пытаюсь записать фрейм данных потока.
Проблема union
в том, что отображаются только первые df
полученные строки.
У вас есть какие-либо идеи, как получить все мои данные, полученные союзом, или как я могу применить один и тот же водяной знак к нескольким кадрам данных ?
Танк тебе !
Ответ №1:
Имеют ли df1 и df2 одинаковую структуру? Функция объединения в spark разрешает столбцы по позиции (не по имени).
Чтобы объединить по имени, используйте:
df1.unionByName(df2, allowMissingColumns=True)
(доступно в Spark 3.1.X)