我一直工作在一些星火使用Python,具体textFileStream流,而且我发现一个稍显怪异行为。我想知道有没有人可以帮我解释一下。Python的星火流只运行一次
目前,我有我的代码设置如下:从调试流(Spark Streaming: How to get the filename of a processed file in Python)正在处理的文件的
def fileName(data):
debug = data.toDebugString()
pattern = re.compile("file:/.*\.txt")
files = pattern.findall(debug)
return files
if __name__ == "__main__":
sc = SparkContext(appName="PythonStreamingFileNamePrinter")
ssc = StreamingContext(sc, 1)
lines = ssc.textFileStream("file:///test/input/")
files = lines.foreachRDD(fileName)
print(files)
ssc.start()
ssc.awaitTermination()
,文件名功能简单争夺的名称。但是,此代码仅运行一次,只能打印一次文件。当我修改功能如下:
def fileName(data):
debug = data.toDebugString()
pattern = re.compile("file:/.*\.txt")
files = pattern.findall(debug)
print(files);
它每秒钟检查目录,如预期。似乎唯一的代码是“循环”在foreachRDD中。
我是在这个假设是正确的,并且所有处理(包括循环,条件等)必须内部地图功能等发生的?
感谢, 中号
有道理。谢谢。 – swinefish