Spark Streaming с Kafka с использованием PySpark - длительное время обработки (медленное / задержка) - PullRequest
0 голосов
/ 21 марта 2019

Я работаю над простым POC, как использовать Spark и Kafka. В этом POC я использую PySpark для своего потокового приложения (я выбрал прямой подход).

Источник данных : я создал 3 простых приложения nodejs для продолжения создания данных в той же теме кафки под названием "messagetopic-a". Эти приложения производят символы «A», «B» и «C» соответственно каждые 2 секунды.

Приложение Spark Stream :

    def start():


        sconf=SparkConf()
        sconf.set('spark.cores.max' , 8)
        sconf.set('spark.executor.cores',4)
        sconf.set('spark.driver.memory','2g')

        sc=SparkContext(appName='PythonStreamingDirectKafkaWordCount',conf=sconf)
        ssc=StreamingContext(sc,2)

        brokers="localhost:9092"
        topic='messagetopic-a'

        topicPartion = TopicAndPartition(topic, 0)
        fromOffset = {topicPartion: 1}

        kvs = KafkaUtils.createDirectStream(ssc,[topic],kafkaParams={"metadata.broker.list": brokers},fromOffsets = fromOffset)
        lines = kvs.map(lambda x: x[1])

        counts = lines.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)
        counts.pprint()

        ssc.start()
        ssc.awaitTermination()


if __name__ == '__main__':
    start()

Команда для запуска приложения Spark :

bin\spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8_2.11:2.2.0 D:\spark-2.3.3-bin-hadoop2.7\python\sparkStreaming_directApproach.py

Мои вопросы:

Когда я получаю доступ к SparkUI и проверяю время обработки первого пакетного задания, обработка 8064 записей занимает 42 секунды. Для заданий после первого задания это около 10 ~ 12 секунд для 6 ~ 8 записей.

Я использую свой ноутбук для POC, и я нахожусь в Windows 10 с 16 ГБ ОЗУ.

Мне интересно, нормально ли время обработки этого POC? Любая конфигурация, которую я могу установить, чтобы улучшить время обработки?

Большое спасибо.

...