我有一个用例,其中我处理流数据集,制作一个外部API来丰富数据集并将其写入接收器。到目前为止,我正在做什么:
val simpleDS: Dataset[SimpleModel] = spark
.readstream
.format("kafka")
.option(..)..
def enrich(model: SimpleModel): EnrichedModel = {
val fut: Future[Int] = lookupLabel(model.id)
val enrich: Int = Await.result(fut, 5.seconds)
EnrichModel(model.id, enrich)
}
val enrichedDS = dataset.map(enrich)
enrichedDS
.toJson
.writeStream
.format("kafka")
.option(..)..
尽管此方法有效,但我不确定Await.result
部分是否会阻塞。但是,无阻塞的future.onComplete
似乎对副作用(Unit
)感兴趣,而不对Future(Int
)返回的值感兴趣。我是否可以使用非阻塞调用来获取Future
返回的值?