Flume与TwitterSource和Elasticsearch Sink合作

时间:2014-02-14 10:22:29

标签: twitter elasticsearch flume

我正在尝试使用flume来使用Twitter Stream API并将推文索引到我的elasticsearch。我设置我的flume.conf使用com.cloudera.flume.source.TwitterSource作为推特源(使用我的开发令牌),我使用默认弹性系统作为接收器。

我能够得到推文(因为我也把它保存到HDFS中,当我打开文件时我可以看到推文)但是当我搜索我的弹性搜索时,我会得到回复:

 {
      _index: twitter-2014-02-14
      _type: tweet-rt
      _id: ilL5ZrBRSlqrZcsVUbnO-g
      _version: 1
      _score: 1
      _source: {
      @message: org.elasticsearch.common.xcontent.XContentBuilder@12da4409
      @timestamp: 2014-02-14T10:16:13.000Z
      @fields: {
      timestamp: 1392372973000
      }

  }

这是我的水槽配置示例。

# - ElasticSearch Sink                                                                                                                                
TwitterAgent.sinks.ES.type = elasticsearch
TwitterAgent.sinks.ES.channel = FileChannel
TwitterAgent.sinks.ES.hostNames = 192.168.10.100:9300
TwitterAgent.sinks.ES.indexName = twitter
TwitterAgent.sinks.ES.indexType = tweet-rt
TwitterAgent.sinks.ES.clusterName = testou

我还需要添加其他内容吗?我不明白为什么ES无法反序列化我的推文。

有什么想法吗?

三江源

2 个答案:

答案 0 :(得分:1)

这很奇怪。它在XContentBuilder上执行某种形式的identityHashCode来获取该消息,但不应该这样做。

我想我建议清除Flume并重新安装。我担心类路径和JAR依赖问题。

什么版本的Flume?

答案 1 :(得分:0)

对于遇到此错误的其他人,这是水槽弹性搜索接收器中的一个错误,现已修复。见https://issues.apache.org/jira/browse/FLUME-2126

如果您使用的是早于1.6的水槽版本,您可能希望根据您的版本挑选并使用此修补程序构建一个版本。