1

10 分ごとに Web サイトからデータをダウンロードしてファイルに書き込むアプリケーションを作成しました。次に、これらのファイルが 1 つのファイルにマージされ、このマージされたファイルに対して R プログラムが実行され、感情分析が実行され、結果が hbase に保存されます。

ファイルをマージし、R を実行してから HBase に保存して、ダウンロードしたデータを継続的に実行するプロセスが必要です。

R を実行するために、Java プログラムから R スクリプトを実行しています。Runtime.getRuntime().exec() メソッドを使用して R プログラムを実行しましたが、R プログラムが完了するのを待たず、次の行のメソッドが実行を開始します。 p.waitFor() を使用しても役に立ちませんでした。

以下はコードのスニペットです。

パブリッククラスrunRprogram {

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 に保存するには、どのようなアプローチを使用する必要がありますか?タイマー クラスを使用する必要がありますか??

4

0 に答える 0