如何在一个文件中提取所有收集的推文

时间:2017-07-19 10:14:15

标签: hadoop twitter hdfs flume-ng

我正在使用Flume收集推文并将其存储在HDFS上。 收集部分工作正常,我可以在我的文件系统中找到所有推文。

现在我想在一个文件中提取所有这些推文。 问题是不同的推文存储如下: enter image description here

正如我们所看到的,推文存储在128 MB的块内,但只使用了几个Ko,如果我错了,HDFS的正常行为会纠正我。

但是,如何在一个文件中获取所有不同的推文?

这是我使用以下命令运行的conf文件:

  

flume-ng agent -n TwitterAgent -f ./my-flume-files/twitter-stream-tvseries.conf

twitter-stream-tvseries.conf:

  

TwitterAgent.sources = Twitter

     

TwitterAgent.channels = MemChannel

     

TwitterAgent.sinks = HDFS

     

TwitterAgent.sources.Twitter.type =   org.apache.flume.source.twitter.TwitterSource   TwitterAgent.sources.Twitter.consumerKey =隐藏   TwitterAgent.sources.Twitter.consumerSecret =隐藏   TwitterAgent.sources.Twitter.accessToken =隐藏   TwitterAgent.sources.Twitter.accessTokenSecret =隐藏   TwitterAgent.sources.Twitter.keywords = GoT,GameofThrones

     

TwitterAgent.sources.Twitter.keywords = GoT,GameofThrones

     

TwitterAgent.sinks.HDFS.channel = MemChannel   TwitterAgent.sinks.HDFS.type = HDFS   TwitterAgent.sinks.HDFS.hdfs.path = HDFS:// IP-addressl:8020 /用户/根/数据/叽叽喳喳/ tvseries /鸣叫   TwitterAgent.sinks.HDFS.hdfs.fileType =的数据流中   TwitterAgent.sinks.HDFS.hdfs.writeformat =文本   TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000   TwitterAgent.sinks.HDFS.hdfs.rollSize = 0   TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000   TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600

     

TwitterAgent.channels.MemChannel.type =存储器   TwitterAgent.channels.MemChannel.capacity = 10000   TwitterAgent.channels.MemChannel.transactionCapacity = 1000

     

TwitterAgent.sources.Twitter.channels = MemChannel   TwitterAgent.sinks.HDFS.channel = MemChannel

2 个答案:

答案 0 :(得分:0)

您可以配置HDFS接收器以按时间,事件或大小生成消息。因此,如果要保存多条消息,直到达到120MB限制,请设置

hdfs.rollInterval = 0 # This is to create new file based on time
hdfs.rollSize = 125829120 # This is to create new file based on size
hdfs.rollCount = 0 # This is to create new file based on events (different tweets in your case)

答案 1 :(得分:0)

您可以使用以下命令将文件连接到单个文件中:

find . -type f -name 'FlumeData*' -exec cat {} + >> output.file

或者如果要将数据存储到Hive表中以供以后分析,请创建一个外部表并将其用于Hive DB。