使用Spark Streaming保留推文

时间:2014-10-27 23:33:45

标签: twitter hdfs twitter4j apache-spark spark-streaming

首先,我们的要求非常简单。当推文进来时,我们需要做的就是将它们保留在HDFS上(定期)。

检查站' JavaStreamingContext的API看起来很有希望,但经过进一步审查,似乎有不同的用途。 (另外,我一直得到' / checkpoint / temp,错误:没有这样的文件或目录(2)'错误,但现在不要担心这个问题。

问题:JavaDStream没有“saveAsHadoopFiles'方法 - 哪种方式有意义。我想从流媒体工作中保存到Hadoop并不是一个好主意。

推荐的方法是什么?我应该写一下传入的推文'到Kafka队列,然后使用像Camus'(https://github.com/linkedin/camus)这样的工具推送到HDFS?

2 个答案:

答案 0 :(得分:0)

遇到了这个 awesome 博客文章,证实了我的想法。作者使用Kafka,Storm,Camus等技术构建了一个“外汇交易系统”。这个用例与我的相似,所以我将使用这个设计&工具。感谢。

http://insightdataengineering.com/blog/Building_a_Forex_trading_platform_using_Kafka_Storm_Cassandra.html

答案 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)

假设输入不变,时间窗口将控制每个流间隔处理的消息量。