2017-11-29 7 views
1

シェルスクリプトからスパークジョブを送信しようとしています。シェルスクリプトファイルを使用したスパークジョブの送信

spark-submitコマンドだけの簡単なスクリプトです。私は火花submitコマンドを通じて私のメイン関数に引数を与えるためにしようとしていますが、私はシェルがジョブファイル実行しようとすると、エラーで失敗している:私は私のコードにマッチケースを使用してきたように

scala.MatchError: rma (of class java.lang.String) 

これには、「xyzが」私は、コマンドに渡していた文字列である私のシェルスクリプト

#adsName=$1 
    spark-submit --class TestQuery --master yarn --deploy-mode cluster \ 
--driver-memory 12G --executor-memory 8G --executor-cores 4 \ 
--num-executors 100 --files /opt/mapr/spark/spark-2.1.0/conf/hive-site.xml \ 
--jars /users/myuser/config-1.2.0.jar \ 
/users/myuser/jars/adsoptimization_2.11-0.1.jar \ 
xyz 

の内容です。現時点ではまだハードコーディングしていますが、これはうまく動作しません。これをシェルファイルへの引数として動的に渡したいと思っていました。

メイン関数内の私のコード:

args(0) match { 
    case "str1" => TestQuery(spark).runstr1 
    case "xyz" => TestQuery(spark).runxyz 
    case "str2" => TestQuery(spark).runstr2 
    case "str3" => TestQuery(spark).runstr3 
} 

ので、私は合格しています「XYZ」の文字列が(0)引数を中来る(と、私は渡すことによって、私の場合クラスで定義された関数を呼び出しています引数としてスパークセッションオブジェクト)だからここインクルードが尋ねる

は、単にあなたが一致するパターンを持つ値を渡すときにエラーが来るシェルスクリプト

+1

パターンマッチング式の前に 'args.foreach(println)' **を実行できますか? 'args'として渡されるものが分かります。また、 'SPARK_PRINT_LAUNCH_COMMAND = 1'でシェルスクリプトを起動して、' spark-submit'が実行するものを確認してください。根本的な原因を捜すのに十分なものです。 –

答えて

0

を経由して実行スパークジョブを作成する方法です。あなたはrmaに合格しましたが、あなたはその事件はありませんでした。これを追加するだけです...

args(0) match { 
    case "str1" => TestQuery(spark).runstr1 
    case "xyz" => TestQuery(spark).runxyz 
    case "str2" => TestQuery(spark).runstr2 
    case "str3" => TestQuery(spark).runstr3 
    case _ => TestQuery(spark).someDefaultDefined 
} 
+0

この場合ではありません正しい引数を渡しています – AJm

+0

あなたのスパーク送信には何も問題はありません。そして、あなたのエラーは、一致するパターンのない値を与えることによって簡単に複製できます。おそらくあなたのargs(0)は何も捕まえていない、あなたはデバッガを使っているべきです、あるいはあなたは単にargs(0)古い学校のスタイルにあるものを出力することができます。それから私たちはそれをさらに調べることができます。実際にあなたの全体のメインメソッドを投稿できますか? –

+0

それは大丈夫です。私は結果またはagrs(0)をvalに持っていってこれを修正することができました。 – AJm

関連する問題