查找pyspark StreamingContext状态

时间:2017-07-05 17:49:56

标签: apache-spark pyspark spark-streaming

所以我使用另一个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

1 个答案:

答案 0 :(得分:0)

我相信答案并不像我想象的那么复杂。 context == StreamingContext.getActive()应该这样做。