gpt4 book ai didi

scala - 使用 Spark DStream 作为 Akka 流的源的惯用方式

转载 作者:行者123 更新时间:2023-12-03 21:33:31 25 4
gpt4 key购买 nike

我正在构建一个 REST API,它在 Spark 集群中开始一些计算,并以分块的结果流进行响应。鉴于带有计算结果的 Spark 流,我可以使用

dstream.foreachRDD()

将数据发送出 Spark。我正在使用 akka-http 发送分块的 HTTP 响应:
val requestHandler: HttpRequest => HttpResponse = {
case HttpRequest(HttpMethods.GET, Uri.Path("/data"), _, _, _) =>
HttpResponse(entity = HttpEntity.Chunked(ContentTypes.`text/plain`, source))
}

为简单起见,我首先尝试让纯文本工作,稍后将添加 JSON 编码。

但是使用 Spark DStream 作为 Akka 流源的惯用方式是什么?我想我应该能够通过套接字来做到这一点,但由于 Spark 驱动程序和 REST 端点位于同一个 JVM 上,为此打开一个套接字似乎有点矫枉过正。

最佳答案

不确定提问时的 api 版本。但是现在,有了 akka-stream 2.0.3,我相信你可以这样做:

val source = Source
.actorRef[T](/* buffer size */ 100, OverflowStrategy.dropHead)
.mapMaterializedValue[Unit] { actorRef =>
dstream.foreach(actorRef ! _)
}

关于scala - 使用 Spark DStream 作为 Akka 流的源的惯用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33382895/

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