scala - 为什么对 kafka 主题的查询进行流式连接需要这么长时间?
问题描述
我正在使用 Spark Structured Streaming 并加入来自 Kafka 主题的两个流。
我注意到每条记录的流式查询大约需要 15 秒。在下面的屏幕截图中,阶段 id 2 需要 15 秒。为什么会这样?
代码如下:
val kafkaTopic1 = "demo2"
val kafkaTopic2 = "demo3"
val bootstrapServer = "localhost:9092"
val spark = SparkSession
.builder
.master("local")
.getOrCreate
import spark.implicits._
val df1 = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", bootstrapServer)
.option("subscribe", kafkaTopic1)
.option("failOnDataLoss", false)
.load
val df2 = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", bootstrapServer)
.option("subscribe", kafkaTopic2)
.option("failOnDataLoss", false)
.load
val order_details = df1
.withColumn(...)
.select(...)
val invoice_details = df2
.withColumn(...)
.where(...)
order_details
.join(invoice_details)
.where(order_details.col("s_order_id") === invoice_details.col("order_id"))
.select(...)
.writeStream
.format("console")
.option("truncate", false)
.start
.awaitTermination()
代码方面一切正常。唯一的问题是加入两个流的时间。如何优化此查询?
解决方案
给定主 URL,即.master("local")
. local[*]
至少将其更改为,您应该更快地找到加入。
推荐阅读
- python - 在 Selenium 中通过部分 Xpath 查找元素
- html - 在 Django 中获取请求
- asp.net-web-api - 具有复杂类型的 List 属性的 Url 语法
- css - SVG 掩码图像未在 Firefox 和 Edge 中显示
- python - 具有内部预测的自定义 Keras 损失函数
- ruby-on-rails - 在嵌套哈希中打印字符串 - Ruby
- javascript - Javascript:函数声明/表达式中的函数/变量提升
- laravel - Laravel 实现用户好友(聊天)状态
- python - 具有动态创建的 GroupBoxes 的 PyQt5 QScrollArea 小部件
- android - 房间语用查询