0

我是水槽的新手,我使用水槽通过搜索 API 从 twitter 流式传输数据。但是 twitter json 的“geo”键设置为空。那么有没有办法在 Flume 中使用 Streaming API 获取 twitter 数据。?

4

1 回答 1

0

请参考此链接。前段时间尝试做同样的事情时,我帮了我很多。基本上,您必须执行以下操作:

  • 在https://dev.twitter.com/apps/中创建一个应用程序以生成 OAuth 密钥。这一步可能已经完成,因为您说您过去已经查询过 Twitter。
  • 从这里下载专门为 Twitter 设计的 Cloudera 源代码,并通过编辑conf/flume-env.sh和添加以下行将此类 jar 放入 Flume 类路径中:

    FLUME_CLASSPATH="/home/training/Installations/apache-flume-1.3.1-bin/flume-sources-1.0-SNAPSHOT.jar"
    
  • 为名为“TwitterAgent”的新 Twitter 代理编辑 Flume 配置文件,类似于:

    TwitterAgent.sources = Twitter
    TwitterAgent.channels = MemChannel
    TwitterAgent.sinks = HDFS
    
    TwitterAgent.sources.Twitter.type = com.cloudera.flume.source.TwitterSource
    TwitterAgent.sources.Twitter.channels = MemChannel
    TwitterAgent.sources.Twitter.consumerKey = <consumerKey>
    TwitterAgent.sources.Twitter.consumerSecret = <consumerSecret>
    TwitterAgent.sources.Twitter.accessToken = <accessToken>
    TwitterAgent.sources.Twitter.accessTokenSecret = <accessTokenSecret>
    
    TwitterAgent.sources.Twitter.keywords = <comma-separated list of keywords you are interested in>
    
    TwitterAgent.sinks.HDFS.channel = MemChannel
    TwitterAgent.sinks.HDFS.type = hdfs
    TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost:9000/user/flume/tweets/
    TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream
    TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text
    TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000
    TwitterAgent.sinks.HDFS.hdfs.rollSize = 0
    TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000
    
    TwitterAgent.channels.MemChannel.type = memory
    TwitterAgent.channels.MemChannel.capacity = 10000
    TwitterAgent.channels.MemChannel.transactionCapacity = 100
    

然后,您可以通过发出以下命令来启动 Twitter Flume 代理:

$ bin/flume-ng agent --conf ./conf/ -f conf/flume.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent
于 2015-04-14T06:32:17.197 回答