首页 > 解决方案 > 有什么建议可以解决火花流每 10 秒的处理时间峰值吗?

问题描述

我使用火花流运行一个程序来消耗 kafka 数据来进行实时统计。当numPartitions函数中的参数reduceByKeyAndWindow没有设置时,处理时间很奇怪。每 10 秒达到峰值。 处理时间图片链接 所有代码如下。虽然当numPartitions设置为 1 时这种情况可以解决,但也有numPartitions需要更大的 1 来处理数据的情况。

conf = SparkConf()
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
conf.set('spark.driver.extraJavaOptions', "-Xss30M")
ctx = SparkContext(appName="PythonStreamingIDCount", conf=conf)
ctx.setLogLevel('FATAL')
ctx.setCheckpointDir('./checkpoint')
streaming_ctx = StreamingContext(ctx, 1)  # s
broker, topic = "127.0.0.1:9092", ["spark"]
kvs = KafkaUtils.createDirectStream(streaming_ctx, topic, {"metadata.broker.list": broker})
lines = kvs.map(lambda items: items[1])
counts = lines. \
    map(lambda ip: (ip, 1)). \
    reduceByKeyAndWindow(lambda a, b: a + b, lambda a, b: a - b, 60, 1)

我不知道发生了什么。有谁能够帮我?

标签: apache-sparkpysparkapache-kafka

解决方案


推荐阅读