2017-10-20 15 views
0

私はsnappydata cliからjarファイルを実行しようとしています。SnappyData - snappy-job - jarファイルを実行できません

私は最初にsparkSessionセッションとSnappyDataセッションを作成したいだけです。 SBTファイルから

package io.test 

import org.apache.spark.sql.{SnappySession, SparkSession} 

object snappyTest { 

    def main(args: Array[String]) { 
    val spark: SparkSession = SparkSession 
    .builder 
    .appName("SparkApp") 
    .master("local") 
    .getOrCreate 

val snappy = new SnappySession(spark.sparkContext) 
} 
} 

name := "SnappyPoc" 

version := "0.1" 

scalaVersion := "2.11.8" 

libraryDependencies += "io.snappydata" % "snappydata-cluster_2.11" % "1.0.0" 

私はIDEでコードをデバッグのだとき、それは正常に動作しますが、私はjarファイルを作成して、てきぱき上で直接それを実行しようとすると、私はメッセージが表示されます。

"message": "Ask timed out on [Actor[akka://SnappyLeadJobServer/user/context-supervisor/snappyContext1508488669865777900#1900831413]] after [10000 ms]", 
"errorClass": "akka.pattern.AskTimeoutException", 

私はSpark Standalone 2.1.1、SnappyData 1.0.0を持っています。 私はSparkインスタンスに依存関係を追加しました。

お手伝いできますか?ありがとうございました。

答えて

0

私はisValidJobメソッドとrunSnappyJobメソッドがないと思います。 コードを追加するとうまくいくが、metod runSnappyJobとメソッドメインとの関連付けが何であるか知っている人

両方で同じにする必要がありますか?

0

「組み込み」モードと「スマートコネクタ」モードの違いを最初に説明する必要があります。

通常、spark-submitを使用してジョブを実行すると、設定ごとに新しい実行者JVMのセットが生成され、コードが実行されます。しかし、SnappyDataの組み込みモードでは、データをホストするノードは長時間実行するSpark Executors自体もホストします。これは、データ移動(すなわち、データではなく実行の移動)を最小にするために行われる。このモードでは、ジョブを(snappy-job.shを使用して)送信して、それらの既存のエグゼキュータでコードを実行できます。代替ルートには、組み込み実行用のJDBC/ODBCが含まれます。これはまた、組み込みジョブを実行するためにspark-submitを使用することができないことを意味します。組み込みジョブは独自のJVMを生成するためです。

「スマートコネクタ」モードは、他のスパークコネクタが動作する通常の方法ですが、それらのすべてがエグゼキュータJVMに必要なデータをプルする必要があるため、組み込みモードよりも遅くなるという欠点があります。これを設定するには、SnappyDataクラスターのロケーター上で実行されているリフトサーバーを指すために、 "snappydata.connection"プロパティーを指定する必要があります。これは、ユーザがクラスタの実行能力を拡大したい場合(例えば、クラスタの埋め込み実行が常にCPU上で飽和している場合)、または既存のSparkディストリビューション/配備の場合に便利です。言うまでもなく、spark-submitはコネクタモードでうまく動作します。このモードについて「スマート」とは、a)データをホストする物理ノードとエグゼキュータを実行するノードが共通の場合、ネットワーク使用を最小限に抑えるためにパーティションをエグゼキュータにできるだけルーティングすること、b)最適化されたSnappyDataプランを使用することテーブルのスキャン、ハッシュアグリゲーション、ハッシュジョイン。

この特定の質問については、答えは次のとおりです。runSnappyJobは、SnappySessionオブジェクトを作成するのではなく、その引数として受け取ることになります。 SnappySessionを使用する本体の残りの部分はまったく同じです。同様に、ベースSparkContextを扱う場合、SparkJobを実装する方が簡単かもしれませんが、コードはSparkContextを関数の引数として提供する以外は同様です。上記の理由は:組み込みモードでは、実行中のSparkContextが既にジョブに使用されている必要があるためです。

+0

ありがとう、今私は今やっている;) – Tomtom

関連する問題