2017-06-19 8 views
0

masterURL=yarn-clientでスパークジョブを実行しようとしています。 SparkLauncher 2.10を使用します。 Javaコードはnifiプロセッサーでラップされています。 Nifiは現在ルートとして実行されています。私が糸の塗布リストをするとき、私はUSER = rootで始まるスパークジョブを見る。私はUSER = hiveでそれを実行したいです。 以下は私のSparkLauncherコードです。SparkLauncherハイブとしてユーザーと一緒に糸クライアントでspark-submitを実行

Process spark = new SparkLauncher() 
    .setSparkHome(cp.fetchProperty(GlobalConstant.spark_submit_work_dir).toString()) 
    .setAppResource(cp.fetchProperty(GlobalConstant.spark_app_resource)) 
    .setMainClass(cp.fetchProperty(GlobalConstant.spark_main_class)) 
    .addAppArgs(ps.getName()) 
    // .setConf(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS,"-Duser.name=hive") 
    .setConf(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS, "-Dlog4j.configuration=file:///opt/eim/log4j_submitgnrfromhdfs.properties") 
    .setVerbose(true) 
    .launch(); 

ドライバの追加オプションとしてユーザーを渡す必要がありますか?環境は非ケルベロスです。 ドライバの追加Javaオプションとしてユーザー名を渡す必要がある場所を読んでください。その投稿を今見つけることができません!!

+0

'輸出HADOOP_USER_NAME = hive' –

+0

で意図したとおりにyarn application -list起動をチェック以下

Process spark = new SparkLauncher(getEnvironmentVar(ps.getRunAs())) .setSparkHome(cp.fetchProperty(GlobalConstant.spark_submit_work_dir).toString()) .setAppResource(cp.fetchProperty(GlobalConstant.spark_app_resource)) .setMainClass(cp.fetchProperty(GlobalConstant.spark_main_class)) .addAppArgs(ps.getName()) // .setConf(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS,"-Duser.name=hive") .setConf(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS, "-Dlog4j.configuration=file:///opt/eim/log4j_submitgnrfromhdfs.properties") .setVerbose(true) .launch(); 

代わりのnew SparkLancher()SparkLauncher(java.util.Map<String,String> env).追加を使用したりHADOOP_USER_NAME=hive. を置き換えをしたあなたは、記録のためにspark.yarn.principal – vgunnu

答えて

0

エクスポートHADOOP_USER_NAME =ハイブが動作しました。 SparkLauncherには、環境変数のマップを受け入れるためのオーバーロードがあります。 spark.yarn.principleに関しては、環境は非kerberosです。私の読書によると、原糸はケルボロとしか働かない。 USER=hive.

+0

を試してみました、そのenv変数はSpark自体ではなく、Hadoopクライアントのlibsによって使用されます。 –

+0

入手していただきありがとうございます... – SSC

関連する問題