Примерът за броене на думи за структурирано поточно предаване на Apache Spark в локален режим е супер бавен

Опитвам се да стартирам пример за броене на думи на Apache Spark за структуриран стрийминг в локален режим и получавам много висока латентност от 10-30 секунди. Ето кода, който използвам (взет от https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html):

host = sys.argv[1]
port = int(sys.argv[2])

spark = SparkSession \
    .builder \
    .appName("StructuredNetworkWordCount") \
    .getOrCreate()

spark.sparkContext.setLogLevel("ERROR")

lines = spark \
    .readStream \
    .format("socket") \
    .option("host", host) \
    .option("port", port) \
    .load()

words = lines.select(
   explode(
       split(lines.value, " ")
   ).alias("word")
)

# Generate running word count
wordCounts = words.groupBy("word").count()

query = wordCounts \
    .writeStream \
    .outputMode("update") \
    .format("console") \
    .start()

query.awaitTermination()

В ръководството за програмиране се споменава, че латентността трябва да бъде около 100 ms и това не изглежда сложен пример. Друго нещо, което трябва да спомена е, че когато изпълнявам това без каквато и да е обработка (просто предавам поточно данните към изхода), виждам резултатите веднага.

Примерът беше изпълнен на Ubuntu 18.04, Apache Spark 2.4.4.

Това нормално ли е или правя нещо нередно тук?

Благодаря! гал


person Gal Malka    schedule 22.09.2019    source източник