所以我使用另一个pyspark程序来控制StreamingContext
何时开始和停止执行其流。与此同时,我试图让这个程序运行:
import sys
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
if __name__ == '__main__':
if len(sys.argv) != 2:
sys.exit("Usage: <fileName> <appId>")
appId = sys.argv[1]
context = None
for ssc in StreamingContext.getActive():
if ssc.sparkContext.applicationId == appId:
context = ssc
break
else:
sys.exit("No StreamingContext found with matching appId")
#while context has started but not stopped
print("StreamingContext is working, writing data to stream.")
#write data to stream
我能够找到我的其他程序创建的context
,问题是如果它已经启动或停止,我就不会这样做。 awaitTermination()
似乎在这种情况下不起作用,因为我想不断检查context
的状态,而不是让程序挂起。反正我还能这样做吗?
我正在使用:
Python 3.6
PySpark 2.1.1
答案 0 :(得分:0)
我相信答案并不像我想象的那么复杂。 context == StreamingContext.getActive()
应该这样做。