第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用主類和用戶獲取 Spark ApplicationID

如何使用主類和用戶獲取 Spark ApplicationID

撒科打諢 2022-08-17 15:35:04
我正在將Hadoop 2.0與Cloudera一起使用,并嘗試使用Java程序來(lái)檢查特定的Spark applicationID是否正在運(yùn)行并采取進(jìn)一步的步驟。我有觸發(fā)特定 Spark 應(yīng)用程序的主類和用戶(帳戶)信息。我知道下面,但是是否有任何Java API可以幫助解析和使用Main類名和用戶名進(jìn)行匹配?yarn application -list有沒(méi)有辦法通過(guò)使用另一個(gè)Java程序中的Main Class和用戶信息來(lái)獲取正在運(yùn)行的spark應(yīng)用程序的appramentID?[編輯]一種方法是發(fā)出以下命令:yarn application -list -appStates RUNNING | grep $application_name | grep $user | cut -f 1如果有任何Java API可以簡(jiǎn)化,請(qǐng)分享。[編輯]上面的命令很好,但是我嘗試使用YarnClient,如下所示:公共類 SomeCheck {    public boolean run(String account, String appName) throws YarnException, IOException {        SparkContext sc = new SparkContext(new SparkConf().setMaster("yarn").setAppName("SomeCheck"));        YarnConfiguration conf = new YarnConfiguration(SparkHadoopUtil.get().newConfiguration(sc.getConf()));        YarnClient yarnClient = YarnClient.createYarnClient();        yarnClient.init(conf);        yarnClient.start();        EnumSet<YarnApplicationState> states =                  EnumSet.of(YarnApplicationState.ACCEPTED, YarnApplicationState.RUNNING);        List<ApplicationReport> applications = yarnClient.getApplications(states);        for (ApplicationReport application : applications) {               if ((application.getUser() == account) & (application.getName() == appName)) return true;        }        return false;    }}它指向SparkContext sc = new SparkContext(new SparkConf().setMaster("yarn").setAppName("SomeCheck"));錯(cuò)誤: ERROR spark.SparkContext: Error initializing SparkContext.com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.version'代碼中是否有任何不正確的內(nèi)容?
查看完整描述

2 回答

?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

Vijay建議的上述方法適用于當(dāng)前正在運(yùn)行的應(yīng)用程序。

但似乎您的要求是獲取所有應(yīng)用程序。


問(wèn)題:是否有任何Java API可以幫助解析和匹配使用Main類名和用戶名?

請(qǐng)參閱 hadoop 文檔 YarnClient ...這里

基本上,有哪個(gè)會(huì)得到所有的應(yīng)用程序。YarnClientgetApplications

摘要 列表 get 應(yīng)用程序(EnumSet 應(yīng)用程序狀態(tài)) 獲取與集群中給定應(yīng)用程序狀態(tài)匹配的應(yīng)用程序的報(bào)告(應(yīng)用程序報(bào)告)。

您可以嘗試類似這樣的東西,它將定期打印所有應(yīng)用程序

import org.apache.hadoop.yarn.client.api.YarnClient

public class YarnMonitor {

    public static void main(String [] args) throws Exception{

        SparkContext sc = new SparkContext(new SparkConf().setMaster("yarn").setAppName("Yarn Monitor"));


        YarnClient yarnClient = YarnClient.createYarnClient();

        YarnConfiguration yarnConf = new YarnConfiguration(SparkHadoopUtil.get().newConfiguration(sc.getConf()));


        while(true){ // periodically loop and get currently running apps


            yarnClient = YarnClient.createYarnClient();

            List<ApplicationReport> applications = yarnClient.getApplications();


            for (ApplicationReport application : applications) {

                System.out.println(application.getName());

            }

            Thread.sleep(1000); // sleep for 1000 ms

        }

    }


查看完整回答
反對(duì) 回復(fù) 2022-08-17
?
慕的地6264312

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以在當(dāng)前 spark 應(yīng)用程序代碼本身中獲取應(yīng)用程序 ID。


這里是示例(Scala)代碼片段java也具有相同的api。


// create spark configuration

SparkConf conf = new SparkConf().setMaster("local");

conf.set("spark.app.name", "test");


// create a spark context

SparkContext sc = new SparkContext(conf);


// get the application id

String appId = sc.applicationId();


// print the application id

System.out.println("Application id:  " + appId);


// stop the spark context

sc.stop();

請(qǐng)嘗試這個(gè)。


查看完整回答
反對(duì) 回復(fù) 2022-08-17
  • 2 回答
  • 0 關(guān)注
  • 263 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)