首先,我们的要求非常简单。当推文进来时,我们需要做的就是将它们保留在HDFS上(定期)。
检查站' JavaStreamingContext的API看起来很有希望,但经过进一步审查,似乎有不同的用途。 (另外,我一直得到' / checkpoint / temp,错误:没有这样的文件或目录(2)'错误,但现在不要担心这个问题。
问题:JavaDStream没有“saveAsHadoopFiles'方法 - 哪种方式有意义。我想从流媒体工作中保存到Hadoop并不是一个好主意。
推荐的方法是什么?我应该写一下传入的推文'到Kafka队列,然后使用像Camus'(https://github.com/linkedin/camus)这样的工具推送到HDFS?
答案 0 :(得分:0)
遇到了这个 awesome 博客文章,证实了我的想法。作者使用Kafka,Storm,Camus等技术构建了一个“外汇交易系统”。这个用例与我的相似,所以我将使用这个设计&工具。感谢。
答案 1 :(得分:0)
您可以通过在DStream上使用hadoop操作来保存DStream中的数据:
val streamingContext = new StreamingContext(sparkContext, Duration(window))
val tweetStream = TwitterUtils.createStream(streamingContext,...).map(tweet=>tweet.toJSONString)
tweetStream.saveAsTextFiles(pathPrefix, suffix)
假设输入不变,时间窗口将控制每个流间隔处理的消息量。