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

93ze6v8z  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(419)

我用flume收集tweet并将它们存储在hdfs上。收集部分工作正常,我可以在我的文件系统中找到我所有的tweet。
现在我想在一个文件中提取所有这些tweet。问题是不同的tweet存储如下:

我们可以看到,tweet存储在128mb的块中,但只使用了几个ko,这是hdfs的正常行为,如果我错了,请纠正我。
然而,我怎么能在一个文件中得到所有不同的推文?
下面是我使用以下命令运行的conf文件:
flume ng agent-n twitter代理-f./my flume文件/twitter-stream-tvseries.conf
twitter-stream-tvseries.conf:
twitteragent.sources=推特
twitteragent.channels=内存通道
twitteragent.sinks=hdfs
twitteragent.sources.twitter.type=org.apache.flume.source.twitter.twittersource twitteragent.sources.twitter.consumerkey=hidden twitteragent.sources.twitter.consumersecret=hidden twitteragent.sources.twitter.accesstokensecret=hidden twitteragent.sources.twitter.keywords=get,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/user/root/data/twitter/tvseries/tweets-twitteragent.sinks.hdfs.hdfs.filetype=datastream-twitteragent.sinks.hdfs.hdfs.writeformat=text-twitteragent.sinks.hdfs.hdfs.batchsize=1000twitteragent.sinks.hdfs.hdfs.rollsize=0 twitteragent.sinks.hdfs.hdfs.rollcount=10000 twitteragent.sinks.hdfs.hdfs.rollinterval=600
twitteragent.channels.memchannel.type=memory twitteragent.channels.memchannel.capacity=10000 twitteragent.channels.memchannel.transactioncapacity=1000
twitteragent.sources.twitter.channels=memchannel twitteragent.sinks.hdfs.channel=memchannel

qeeaahzv

qeeaahzv1#

您可以将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)
5us2dqdw

5us2dqdw2#

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

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

或者,如果要将数据存储到配置单元表中以供以后分析,请创建一个外部表并将其使用到配置单元数据库中。

相关问题