使用Spark结构化的流解锁API调用

时间:2020-05-03 10:11:55

标签: scala apache-spark concurrency future spark-structured-streaming

我有一个用例,其中我处理流数据集,制作一个外部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返回的值?

0 个答案:

没有答案