我的DataLake(HDFS)adl://datalake.azuredatalakestore.net/Data/prod/2018/2018-02/AHA-2018-02-13.json
中有一个文件。
此文件持续接收来自ESB的数据。因此,我想像流一样读取此文件并在行上执行操作。我试过这个:
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
sc = pyspark.SparkContext()
ssc = StreamingContext(sc, batchDuration=60)
a = 'adl://datalake.azuredatalakestore.net/Data/prod/2018/2018-02/AHA-2018-02-13.csv'
b = "adl://datalake.azuredatalakestore.net/Data/dev/test.out"
lines = ssc.textFileStream(a)
words = lines.flatMap(lambda x : x.split(' '))
wordCounts = words.map(lambda x : (x, 1)).reduceByKey(lambda x,y : x+y)
wordCounts.saveAsTextFiles(b)
ssc.start()
ssc.awaitTermination()
此代码运行没有错误但在我的输出目录adl://datalake.azuredatalakestore.net/Data/dev/test.out
中,我可以看到每分钟创建几个文件夹,尽管我知道我收到了数据,但它们都是空的。
以上代码只是一个例子。我目前正在尝试了解如何对我的文件执行流读取。对我来说,第一件事是计算我文件中每个新行的单词。你能告诉我我现在的代码有什么问题吗?
答案 0 :(得分:0)
问题来自我正在观看特定文件的事实。我应该看一个文件夹来捕获新文件。显然,在追加数据时,没有本机意味着观看文件。