Spark Structured Streaming - оконная операция со старыми данными - PullRequest
0 голосов
/ 02 февраля 2019

Я новичок в 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...