Опитвам се да стартирам пример за броене на думи на 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.
Това нормално ли е или правя нещо нередно тук?
Благодаря! гал