使用java连续运行相关方法

使用java连续运行相关方法,java,scheduled-tasks,Java,Scheduled Tasks,我编写了一个应用程序,每10分钟从一个网站下载一次数据并写入一个文件。然后这些文件合并成一个文件,然后在这个合并的文件上运行R程序来执行情绪分析,结果存储在hbase中 我希望合并文件、运行R、然后存储到HBase的过程能够在下载的数据上持续运行 为了运行R,我们从java程序运行R脚本。我们使用Runtime.getRuntime().exec()方法运行R程序,但它不会等待R程序完成,下一行中的方法开始执行。使用p.waitFor()没有帮助 下面是代码片段 公共类运行程序{ public

我编写了一个应用程序,每10分钟从一个网站下载一次数据并写入一个文件。然后这些文件合并成一个文件,然后在这个合并的文件上运行R程序来执行情绪分析,结果存储在hbase中

我希望合并文件、运行R、然后存储到HBase的过程能够在下载的数据上持续运行

为了运行R,我们从java程序运行R脚本。我们使用Runtime.getRuntime().exec()方法运行R程序,但它不会等待R程序完成,下一行中的方法开始执行。使用p.waitFor()没有帮助

下面是代码片段

公共类运行程序{

public static String rOutputFile; 
public static HashMap catMap;
public static HashMap dtMap;
public static HashMap sentMap;

public static void main(String[] arg) throws IOException, InterruptedException{
    //runR("D:\\workspace\\Out100316.txt","D:\\workspace\\Clean_Out100316");

    cleanupTempFiles();
    mergeFiles();
    rRun();
    Thread.sleep(60000); 
    //sleep for 10 secs and give time for R program to finish

    rOutputFile = "D:\\TweetsData\\TweetsProcessed\\Out1004224944.txt";
    incrementHBaseCounts();

}
public static void rRun()引发IOException{

        Formatter formatter = new Formatter();
        String execom = "C:\\Program Files\\R\\R-2.15.1\\bin\\i386\\Rscript.exe";
        String rpath = "D:\\workspace\\R_scripts\\TextMining.Funtion.R";
        String inputFile = "D:\\TData\\TTemp\\ConcatenatedFile.txt";
        rOutputFile = "D:\\TData\\TProcessed\\Out" + formatter.format("%1$tm%1$td%1$tH%1$tM%1$tS", new Date()) + ".txt";
        String[] command = {"cmd","/c",execom,rpath,inputFile,rOutputFile };
        Runtime.getRuntime().exec(command);
        //Process p = Runtime.getRuntime().exec(command); 
        //int status=p.waitFor();


        System.out.println("R - Program executed");

}
}


我应该使用什么方法进行合并,然后运行R并最终将结果存储在Hbase中?我应该使用timer类吗???

当你说连续时,你是指顺序(一个接一个)?你说的是什么意思
p.waitFor()
没有帮助?将代码张贴在启动Scriptr的地方,你使用的是哪个框架?可能是
exec()
调用失败,您是否已在(br.ready())System.out.println(br.readLine());期间读取其输出(即,
)?这可能会对您有所帮助。@assylias:整个过程是连续的。步骤1:每隔10分钟将数据下载到多个文件中。步骤2:然后将下载的数据合并到一个文件中。步骤3:合并到一个文件完成后,运行R脚本以执行情感分析。步骤4:完成后,数据存储在h中所有这些步骤都将以相同的顺序连续重复。waitFor是Process类中的方法。Process p=Runtime.getRuntime().exec(命令);int status=p.waitFor();