Я работаю над простым 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? Любая конфигурация, которую я могу установить, чтобы улучшить время обработки?
Большое спасибо.