gpt4 book ai didi

apache-spark - StreamingQuery.awaitTermination 的目的是什么?

转载 作者:行者123 更新时间:2023-12-03 23:21:32 26 4
gpt4 key购买 nike

我有一个 Spark Structured Streaming 作业,它从 Kafka 主题读取偏移量并将其写入 aerospike 数据库。目前,我正在准备此作业生产并实现 SparkListener .

在阅读文档时,我偶然发现了这个例子:

StreamingQuery query = wordCounts.writeStream()
.outputMode("complete")
.format("console")
.start();
query.awaitTermination();

After this code is executed, the streaming computation will have
started in the background. The query object is a handle to that active
streaming query, and we have decided to wait for the termination of
the query using awaitTermination() to prevent the process from exiting
while the query is active.



我知道它在终止进程之前等待查询完成。

这究竟是什么意思?它有助于避免查询写入的数据丢失。

当查询每天写入数百万条记录时,它有什么帮助?

我的代码看起来很简单:

dataset.writeStream()
.option("startingOffsets", "earliest")
.outputMode(OutputMode.Append())
.format("console")
.foreach(sink)
.trigger(Trigger.ProcessingTime(triggerInterval))
.option("checkpointLocation", checkpointLocation)
.start();

最佳答案

这里有很多问题,但只回答下面的一个就可以回答所有问题。

I understand that it waits for query to complete before terminating the process. What does it mean exactly?



流查询在单独的守护线程中运行。在 Java 中,守护线程用于允许并行处理,直到 Spark 应用程序的主线程完成(死亡)。在最后一个非守护线程完成后,JVM 关闭,整个 Spark 应用程序完成。

这就是为什么您需要让主非守护线程等待其他守护线程,以便它们可以完成它们的工作。

阅读 What is a daemon thread in Java? 中的守护进程线程

关于apache-spark - StreamingQuery.awaitTermination 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53524198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com