2015-01-11 16 views
5

私は安らかなWebサービスでSpark SQLクエリを実行したいので、Jerseyコンテキストを介してSpark Contextを実行するにはどうすればよいですか? Spark SQLリクエストをクラスタに渡し、その結果をREST API経由でユーザに返す必要があります。しかし、Spark Documentationsでは、jarファイルをクラスタ(マスター/スレーブ)に送信することなく、JavaコードでSpark SQLクエリを実行する方法はありません。REST Webサービスのコンテキストでsparkジョブを呼び出す方法は?

答えて

4

Sparkバージョンが1.4を超える場合は、SparkLauncherを使用してアプリケーションを実行できます。

import org.apache.spark.launcher.SparkLauncher; 

public class MyLauncher { 
    public static void main(String[] args) throws Exception { 
    Process spark = new SparkLauncher() 
     .setAppResource("/my/app.jar") 
     .setMainClass("my.spark.app.Main") 
     .setMaster("local") 
     .setConf(SparkLauncher.DRIVER_MEMORY, "2g") 
     .launch(); 
    spark.waitFor(); 
    } 
} 

jarファイルを使用するには、jarファイルを指定する必要があります。 SparkSQLクエリを実行したいので、それを単一のjarファイルにパックするか、実行するクエリをパラメータとして取得することができます。

警告は、クエリを実行するたびにSparkContextを開始停止する必要があるということです。あなたがそれを待って気にしないなら、それはいいです。しかし、時間が重要な場合は、スパーク・コンテキストを常にアップさせ、アプリケーションがコールを行う別のサービスを作成することをお勧めします。

+1

質問はかなり古いことに気付きましたが、回答がなく、誰かが同じ質問をしている可能性があるので、私はそれに答えました! – MitsakosGR

関連する問題