1

だから私は、次の問題に遭遇するまで、Oozie Java API をいじっていました。次のJavaコードを実行しようとしているとき:

OozieClient oc = new OozieClient(OOZIE_URL);

Properties conf = oc.createConfiguration();

conf.setProperty(OozieClient.APP_PATH, PATH_TO_WF);


String jobId = oc.run(conf);

while(oc.getJobInfo(jobId).getStatus() == WorkflowJob.Status.PREP){
    Thread.sleep(1000);
}

oc.kill(jobId);

これは次の例外で失敗します。

E0508: User [?] not authorized for WF job [JOB_ID_GOES_HERE]

Google で関連する問題をいくつか見つけることができましたが、私が気付いた問題はコマンド ラインの Oozie クライアントにのみ関連していました。

私の主な質問は、単に次を追加するだけで、Java から別のユーザーとして Oozie ワークフローを実行できると考えていることです。

conf.setProperty("user.name", "user123");

ワークフローを強制終了することでできる同様のことはありますか?

4

1 に答える 1

1

AuthOozieClient を使用し、システム ユーザーを設定します。

OozieClient oc = new AuthOozieClient(OOZIE_URL);
System.setProperty("user.name", userName);
client.kill(jobId);
于 2016-03-15T11:54:26.253 に答える