1

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

JavaStreamingContext 的“检查点”API 看起来很有希望,但经过进一步审查,它似乎服务于不同的目的。(另外,我不断收到 '/checkpoint/temp, error: No such file or directory (2)' 错误,但我们暂时不用担心)。

问题:JavaDStream 没有“saveAsHadoopFiles”方法——这有点道理。我想从流式作业保存到 Hadoop 不是一个好主意。

推荐的方法是什么?我是否应该将传入的“推文”写入 Kafka 队列,然后使用诸如“Camus”(https://github.com/linkedin/camus)之类的工具推送到 HDFS?

4

2 回答 2

0

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

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

于 2014-10-28T17:33:12.480 回答
0

您可以使用 DStream 上的 hadoop 操作从 DStream 中保存数据:

val streamingContext = new StreamingContext(sparkContext, Duration(window))
val tweetStream = TwitterUtils.createStream(streamingContext,...).map(tweet=>tweet.toJSONString)
tweetStream.saveAsTextFiles(pathPrefix, suffix)

假设输入恒定,时间窗口将让您控制每个流式传输间隔要处理的消息量。

于 2014-10-28T17:34:50.560 回答