SparkListener в Spark на YARN-CLUSTER не работает? - PullRequest
0 голосов
/ 08 октября 2018

Моя основная цель - получить appId после отправки задачи кластера пряжи через код Java, что удобно для дополнительных бизнес-операций.

Добавьте --conf=spark.extraListeners=Mylistener

ПокаSparkListener работает, когда я использую Spark в автономном режиме, не работает, когда я запускаю Spark в кластере через Yarn.Возможно ли работать SparkListener при работе с пряжей?Если так, какие шаги я должен сделать, чтобы включить это?

Вот код класса Mylistener:

public class Mylistener extends SparkListener {
    private static Logger logger = LoggerFactory.getLogger(EnvelopeSparkListener.class);
    @Override
    public void onApplicationStart(SparkListenerApplicationStart sparkListenerApplicationStart) {
        Option<String> appId = sparkListenerApplicationStart.appId();
        EnvelopeSubmit.appId = appId.get();
        logger.info("====================start");
    }
    @Override
    public void onBlockManagerAdded(SparkListenerBlockManagerAdded blockManagerAdded) {
       logger.info("=====================add");
    }
}

Вот основной класс для подачи заявки:

public static void main(String[] args) {
    String jarpath = args[0];
    String childArg = args[1];
    System.out.println("jarpath:" + jarpath);
    System.out.println("childArg:" + childArg);
    System.setProperty("HADOOP_USER_NAME", "hdfs");
    String[] arg = {"--verbose=true", "--class=com.cloudera.labs.envelope.EnvelopeMain",
            "--master=yarn", "--deploy-mode=cluster","--conf=spark.extraListeners=Mylistener","--conf","spark.eventLog.enabled=true", "--conf","spark.yarn.jars=hdfs://192.168.6.188:8020/user/hdfs/lib/*", jarpath, childArg};
    SparkSubmit.main(arg);
}

1 Ответ

0 голосов
/ 08 октября 2018

Если вы просто хотите получить идентификатор приложения, вы можете просто сделать это,

logger.info(s"Application id: ${sparkSession.sparkContext.applicationId}")

Надеюсь, что это ответ на ваш вопрос!

...