シェルスクリプトからスパークジョブを送信しようとしています。シェルスクリプトファイルを使用したスパークジョブの送信
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)引数を中来る(と、私は渡すことによって、私の場合クラスで定義された関数を呼び出しています引数としてスパークセッションオブジェクト)だからここインクルードが尋ねる
は、単にあなたが一致するパターンを持つ値を渡すときにエラーが来るシェルスクリプト
パターンマッチング式の前に 'args.foreach(println)' **を実行できますか? 'args'として渡されるものが分かります。また、 'SPARK_PRINT_LAUNCH_COMMAND = 1'でシェルスクリプトを起動して、' spark-submit'が実行するものを確認してください。根本的な原因を捜すのに十分なものです。 –