Я запускаю программу, использующую потоковую передачу искры, чтобы использовать данные 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)
Я не знаю, что происходит. Может ли какое-нибудь тело помочь мне?