Spark Streaming作业就像一个批处理

时间:2016-01-28 15:08:42

标签: apache-spark apache-kafka spark-streaming

我正在尝试运行Spark Streaming作业来读取来自Kafka的消息。为了测试,我向Kafka插入了几千兆字节的消息,然后启动了流媒体作业(python)。

from spark import SparkContext, SparkConf
from pyspark.streaming import StreamingContext

conf = SparkConf()
conf.setMaster("spark://master1:7077,master2:7077,master3:7077")
sc = SparkContext(conf=conf)
ssc = StreamingContext(sc, 1)

from pyspark.streaming.kafka import KafkaUtils
directKafkaStream = KafkaUtils.createDirectStream(ssc, ["test_topic"], {"metadata.broker.list": "kafka1:9092,kafka2:9092,kafka3:9092", "auto.offset.reset": "smallest"})

directKafkaStream.count().pprint()

ssc.start()
ssc.awaitTermination()

我希望这份工作能够每秒更新一次,并记录到目前为止的消息(流媒体)。但是,作业会计算队列中的所有消息(无论何时消耗),并且只有在计算完所有消息之后,才会看到更新(批处理)。

拜托,有谁能告诉我这里错过了什么。

更新: 我期待看到的是:

-------------------------------------------
Time: 2016-01-28 16:23:42
-------------------------------------------
1000000

-------------------------------------------
Time: 2016-01-28 16:23:43
-------------------------------------------
10000000

我实际看到的是什么:

16/01/28 16:25:10 INFO JobScheduler: Added jobs for time 1453994710000 ms
16/01/28 16:25:11 INFO JobScheduler: Added jobs for time 1453994711000 ms
16/01/28 16:25:12 INFO JobScheduler: Added jobs for time 1453994712000 ms
16/01/28 16:25:13 INFO JobScheduler: Added jobs for time 1453994713000 ms
16/01/28 16:25:14 INFO JobScheduler: Added jobs for time 1453994714000 ms
16/01/28 16:25:15 INFO JobScheduler: Added jobs for time 1453994715000 ms
16/01/28 16:25:16 INFO JobScheduler: Added jobs for time 1453994716000 ms
...

0 个答案:

没有答案