Twitter数据流 - 动态关键字值变化

时间:2014-03-10 12:07:54

标签: twitter twitter4j flume

我目前正在Hadoop上对Twitter数据进行情感分析。

我已经配置FLUME来根据某些关键字提供数据,我在“FLUME.conf”文件中保存了这些关键字,如下所示

TwitterAgent.sources.Twitter.keywords = Kitkat, Nescafe, Carnation, Milo, Cerelac

提到这一点,我想知道是否可以动态更改关键字,这是基于一个将弹出询问用户关键字的java程序。

此外,除了这种方法之外,请提供您建议的任何其他方法来隐藏更新Flume.conf文件的复杂性。

最诚挚的问候, 拉姆

1 个答案:

答案 0 :(得分:0)

Flume提供了一个Application类来使用Java程序运行其配置文件。

public class Flume{
public static void main(String[] args) throws Exception
{
new Conf().setConfiguration();
  String[] args1 = new String[] { "agent","-nTwitterAgent",
  "-fflume.conf" };
BasicConfigurator.configure();
Application.main(args1);
System.setProperty("hadoop.home.dir", "/");

}
}

在这里,您将获得使用某些文件工具编辑您的conf文件的更改

class Conf{
int ch;
String keyword ="";
Scanner sc= new Scanner(System.in);
public void setConfiguration(){
    System.out.println("Enter the keyword");
    keyword=sc.nextLine();
    byte[] key= keyword.getBytes();

    FileOutputStream fp=null;
    FileInputStream src=null;

    try{
        fp= new FileOutputStream("flumee.conf");
        src= new FileInputStream("flume.conf");
        while((ch=src.read())!=-1){
            fp.write((char)ch);
        }

        fp.write(key);

    }catch(Exception e){
        System.out.println("file Exception:"+ e);
    }finally{
        try{
            if(fp!=null){
                fp.close();
            }
            if(src!=null){
                src.close();
            }
        }catch(Exception e){
            System.out.println("file closing Exception:"+ e);
        }
    }
}
}

现在您需要在您的水槽配置文件的末尾保留TwitterAgent.sources.Twitter.keywords =行,以便您可以更轻松地将关键字添加到文件中。我的flume.conf文件看起来像这样

 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=xxx
 TwitterAgent.sources.Twitter.consumerSecret=xxx
 TwitterAgent.sources.Twitter.accessToken=xxx
 TwitterAgent.sources.Twitter.accessTokenSecret=

 TwitterAgent.sinks.HDFS.channel=MemChannel
 TwitterAgent.sinks.HDFS.type=hdfs
 TwitterAgent.sinks.HDFS.hdfs.path=hdfs://localhost:9000/user/flume/direct
 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.sinks.HDFS.hdfs.rollInterval=600
 TwitterAgent.channels.MemChannel.type=memory
 TwitterAgent.channels.MemChannel.capacity=10000
 TwitterAgent.channels.MemChannel.transactionCapacity=1000

 TwitterAgent.sources.Twitter.keywords=

当我运行程序时,它会首先询问关键字,然后它会开始收集有关该关键字的推文。