Spark streaming:调度时间超过处理时间

时间:2017-07-22 00:00:06

标签: apache-spark spark-streaming spark-dataframe azure-eventhub

我们在Spark 2.1中有一个流式传输作业,从Azure EventHub(spark-streaming-eventhubs_2.11:2.0.5)读取,批处理间隔为5秒。 我们看到平均处理时间约为3秒。但是我们看到批次之间的时间间隔大约是20秒。以下日志显示批次的结束/开始。这导致整体处理落后。处理过程中没有错误。

任何可能导致调度延迟的想法? YarnUI将平均延迟显示为0。不确定为什么批次之间的时间间隔会延迟。

17/07/21 23:38:06 WARN root: !!!!!!!!    Posted Batch count : 420  Time : 224800
17/07/21 23:38:06 WARN root: ----End of batch--------
17/07/21 23:38:25 WARN root: ----Start of batch--------
17/07/21 23:38:26 WARN root: df.rdd.partitions.size=50
17/07/21 23:38:26 WARN root: blockData.rdd.partitions.size=50
17/07/21 23:38:26 WARN root: finalData.rdd.partitions.size=50

[Stage 2590:=================================================>     (9 + 1) / 10]

17/07/21 23:38:28 WARN root: !!!!!!!!    Posted Batch count : 256  Time : 224805
17/07/21 23:38:28 WARN root: ----End of batch--------
17/07/21 23:38:47 WARN root: ----Start of batch--------
17/07/21 23:38:48 WARN root: df.rdd.partitions.size=50
17/07/21 23:38:48 WARN root: blockData.rdd.partitions.size=50
17/07/21 23:38:48 WARN root: finalData.rdd.partitions.size=50

简化的repro代码是:

 eventHubDStream.foreachRDD((rdd: RDD[Array[Byte]], time: Time) => {

val strRDD = rdd.map(w => new String(w))
val df = spark.read.schema(schema).json(rdd)
df.createOrReplaceTempView("table")
val filteredDf = spark.sql("SELECT * FROM table WHERE EventName='Start')
val count = filteredDf.count()

}

0 个答案:

没有答案