twitter数据流-动态关键字值更改

bq3bfh9z  于 2021-06-03  发布在  Flume
关注(0)|答案(1)|浏览(309)

我目前正在hadoop中对twitter数据进行情绪分析。
我已经将flume配置为基于某些关键字带来数据,我在“flume.conf”文件中维护了这些关键字,如下所示

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

提到这一点,我想知道是否有可能动态更改关键字,基于一个java程序,该程序将弹出询问用户的关键字。
另外,除了这个方法之外,请提供你们建议的任何其他方法来隐藏更新flume.conf文件的复杂性。
祝你好运,拉姆

mwg9r5ms

mwg9r5ms1#

flume提供了一个应用程序类来使用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配置文件的末尾,以便更容易地将关键字添加到文件中。我的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=

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

相关问题