我正在尝试使用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无法反序列化我的推文。
有什么想法吗?
三江源
答案 0 :(得分:1)
这很奇怪。它在XContentBuilder上执行某种形式的identityHashCode来获取该消息,但不应该这样做。
我想我建议清除Flume并重新安装。我担心类路径和JAR依赖问题。
什么版本的Flume?
答案 1 :(得分:0)
对于遇到此错误的其他人,这是水槽弹性搜索接收器中的一个错误,现已修复。见https://issues.apache.org/jira/browse/FLUME-2126
如果您使用的是早于1.6的水槽版本,您可能希望根据您的版本挑选并使用此修补程序构建一个版本。