2017-01-12 10 views
-2

ENV:スパーク1.6、ScalaのScalaとSparkで2つのプロセスを並列に実行するには?

こんにちは
は、私は、並列に処理するために実行する必要があります。最初のものはデータを受け取るためのもので、もう1つはHiveテーブルの変換と保存用です。私は1分間隔で最初のプロセスを繰り返し、2分間隔で2番目のプロセスを繰り返したい。

==========First Process=== executes once per minute=============  
val DFService = hivecontext.read 
     .format("jdbc") 
     .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") 
     .option("url", "jdbc:sqlserver://xx.x.x.xx:xxxx;database=myDB") 
     .option("dbtable", "(select Service_ID,ServiceIdentifier from myTable) tmp") 
     .option("user", "userName") 
     .option("password", "myPassword") 
     .load() 
    DFService.registerTempTable("memTBLService") 

    DFService.write.mode("append").saveAsTable("hiveTable") 


=============Second Process === executes once per 2 minute ========= 
var DF2 = hivecontext.sql("select * from hiveTable") 
var data=DF2.select(DF2("Service_ID")).distinct 
data.show() 

この2つのプロセスをScalaでどのように並行して実行することができますか?
ありがとう Hossain

答えて

0

2つの別々のSparkアプリケーションを作成します。

次に、cronを使用して、ご希望のスケジュールに従って各アプリを実行します。また、Apache AirFlowを使用してSparkアプリのスケジュールを設定することもできます。

スパークでcronを使用する方法については、次の質問を参照してください。私はcrontabファイルでスケジュールしようとした場合How to schedule my Apache Spark application to run everyday at 00.30 AM(night) in IBM Bluemix?

+0

スパークコンテキストは、その後、どのように私は分以内に全体のタスクを完了することができ、開始するために、50以上の秒をとりますか、おじいちゃん? – Jhon

+0

毎分SQL Serverからどのくらいのデータを読み込んでいますか?それが少量のデータであれば、通常の(スパークではない)JavaまたはScalaアプリケーションがうまくいくでしょう。 Sparkの起動時間に関しては、可能な限り、このタイプの作業にはSparkを避けることをおすすめします。短い実行時間を考えると、これらは比較的小さい書き込みであると推測します(SQL Serverからの読み取り、ネットワーク経由の転送、ディスクへの書き込みは1分未満です) –

+0

あなたの提案は、このタイプの問題。しかし、私はすでにスカラーコーディングを行っています。私はScala Futureがこの種の問題の解決策になると思います。私は決して未来を試したことはありません。私の問題に関連するいくつかの例があれば、私のために投稿してください。 – Jhon

関連する問題