【发布时间】:2015-11-13 18:28:56
【问题描述】:
通过 PySpark 绑定到 Spark 1.3.1 运行代码时,我遇到了一个奇怪的问题。
考虑下面的代码:
sc = SparkContext("local[1]")
ssc = StreamingContext(sc, 10)
myStream = ssc.socketTextStream("localhost", 4663)
def f(rdd):
rows = rdd.collect()
for r in rows:
print r
myStream.foreachRDD(f)
ssc.start()
ssc.awaitTermination()
现在,如果我运行上面的代码并通过nc -lk 4663 连接,我输入的文本会打印在运行 Spark 的机器的控制台上。太好了。
但是,如果我对代码的第一行进行一次更改:sc = SparkContext()(这将导致它以集群模式启动,驱动程序在本地计算机上运行),我的文本不会打印到控制台 - 尽管我可以看到类似
INFO BlockManagerMaster:块输入-0-1447438549400的更新信息
正在打印到控制台,所以我知道它仍在接收通过 TCP 端口传入的文本。
这很奇怪,因为collect() 操作应该强制将 DStream 中的 RDD 返回给驱动程序,所以我想我应该看到文本。
有人可以帮我吗?我做错了什么?
非常感谢,
会
【问题讨论】:
标签: apache-spark pyspark spark-streaming