Я новичок в Spark Streaming.С октября по декабрь 2018 года я собрал около нескольких гигабайт твитов.
Я написал программу, которая читает эти файлы из каталога и записывает их в поток Kafka.
Сейчас я пишу еще одну программу Kafka Consumer для чтения из этого потока.Я также хотел бы применить оконную функцию к этому потоковому фрейму данных (продолжительность окна 60 минут с скольжением 30 минут).
Для небольших окон (1 минута с 30-секундным скольжением) я получаю вывод.Но для окна, которое я хотел бы, партии пусты.
Мой вопрос: имеет ли значение, что данные, которые я пытаюсь обработать, старые?И если это произойдет, мне нужно сделать какую-то специальную конфигурацию, чтобы она работала?Также я хотел бы узнать, как лучше настроить с помощью Watermark для обработки поздних данных.
Пока это мой потребитель Kafka:
df = spark.readStream.format("kafka").option(
"kafka.bootstrap.servers", broker).option("failOnDataLoss","false").option("subscribe", topic).load()
df = df.select(from_json(F.col("value").cast(
"string"), twitter_schema).alias("tweet"))
df = df.withColumn("timestamp_ms", (F.col("tweet.timestamp_ms")/1000).cast(LongType()).cast(TimestampType()))
w = F.window("timestamp_ms", "60 minute", "15 minute").alias("window")
df = df.withWatermark("timestamp_ms", "60 minute").groupBy(w).count()
df = df.writeStream.format("console").start()
df.awaitTermination()