PySpark Streaming示例似乎没有终止

时间:2015-05-31 05:17:44

标签: python apache-spark spark-streaming pyspark

我试图通过一个简单的例子来理解Spark Streaming的Python API。

from pyspark.streaming import StreamingContext
dvc = [[-0.1, -0.1], [0.1, 0.1], [1.1, 1.1], [0.9, 0.9]]
dvc = [sc.parallelize(i, 1) for i in dvc]
ssc = StreamingContext(sc, 2.0)
input_stream = ssc.queueStream(dvc)

def get_output(rdd):
    print(rdd.collect())
input_stream.foreachRDD(get_output)
ssc.start()

这会输出所需的输出,但最后会打印很多空列表而不会终止。有人能告诉我哪里可能出错了。

1 个答案:

答案 0 :(得分:3)

大多数情况下的流式传输(除非代码中的条件终止)应该是无限的。流应用程序的目的是消耗定期进入的数据。因此,在处理完前4个RDD (i.e. [[-0.1, -0.1], [0.1, 0.1], [1.1, 1.1], [0.9, 0.9]])之后,队列中没有任何内容,而火花串流建立在可能会出现新内容的概念queueStream

如果您正在进行一次性ETL,您可能会考虑丢弃流式传输。