如何通过使用基于窗口时间的结构化火花流来消耗来自Kafka的消息(不立即显示10分钟)

时间:2018-06-28 16:29:56

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

我们进行了批处理,以使用S / Spark执行更新/插入操作。但是现在我们有了用例,可以使这更加实时。以下是配置和我的方法。但这不起作用。

  1. Kafka对于所有JSON消息的消息都是容错的

  2. 我们使用结构化火花流来消费消息,并将这些消息写入s3存储桶中。

  3. 上述更新/插入操作非常昂贵。

  4. 这种情况是,我们需要通过使用结构化火花流来消耗这些Kafka消息,但不是立即进行。问题是,我们需要基于窗口(即10分钟)立即收集发布的消息。

  5. 也就是说,每10分钟,spark流应用程序需要消耗来自Kafka的消息并将其写入s3存储桶。

  6. 我已经在基本数据帧上使用了GROUP BY操作(从Kafka中读取了消息之后)来创建另一个数据帧(df2)。但是此数据帧(df2是分组数据帧)无法使用进一步的处理。

是否可以通过使用火花结构的流来执行?

1 个答案:

答案 0 :(得分:0)

您应该阅读有关Apache Spark结构化流中的触发器的信息。这将帮助您实现所需的工作。在开始播放流 void mergeSort(Person* arr, int low, int high) { if (low < high) { int mid = low + (high - 1) / 2; mergeSort(arr, low, mid); 时,只需设置此触发配置并提及10分钟即可。

要获得代码帮助,您可以查看以下博客Question at Google support