【发布时间】:2020-03-16 12:11:28
【问题描述】:
我有 3 个 kafka 流,每个流有 60 万多条记录,火花流需要 10 多分钟来处理流之间的简单连接。
Spark 集群配置:
这就是我在 spark(scala) 中读取 kafka 流到 tempviews 的方式
spark.read
.format("kafka")
.option("kafka.bootstrap.servers", "KAFKASERVER")
.option("subscribe", TOPIC1)
.option("startingOffsets", "earliest")
.option("endingOffsets", "latest").load()
.selectExpr("CAST(value AS STRING) as json")
.select( from_json($"json", schema=SCHEMA1).as("data"))
.select($"COL1", $"COL2")
.createOrReplaceTempView("TABLE1")
我使用 spark spark sql 加入 3 个 TABLES
select COL1, COL2 from TABLE1
JOIN TABLE2 ON TABLE1.PK = TABLE2.PK
JOIN TABLE3 ON TABLE2.PK = TABLE3.PK
作业的执行:
我是否错过了一些我必须研究的 spark 配置?
【问题讨论】:
-
这可能是由于 Kafka 主题的分区非常低导致 Spark 中的并行度低。你的 Kafka 主题有多少个分区?你使用了多少个执行器?
标签: scala apache-spark apache-kafka spark-structured-streaming