У меня есть одна ситуация, когда в случае, если определенное условие не выполняется, нет необходимости создавать сеанс spark внутри класса, и приложение выходит с сообщением.
Я отправляю задание, как показано ниже, в режиме «пряжа-кластер»
spark2-submit --class com.test.TestSpark --master yarn --deploy-mode client /home/test.jar false
Окончательный статус задания "failed"
.
Но если то же самое выполняется в режиме "клиент-пряжа", задание spark успешно завершается.
Ниже приведен код:
package com.test;
import org.apache.spark.sql.SparkSession;
public class TestSpark {
public static void main(String[] args) {
boolean condition = false;
condition = Boolean.parseBoolean(args[0]);
if(condition){
SparkSession sparkSession = SparkSession.builder().appName("Data Ingestion Framework")
.config("hive.metastore.warehouse.dir", "/user/hive/warehouse").config("spark.sql.warehouse.dir", "/user/hive/warehouse")
.enableHiveSupport()
.getOrCreate();
}else{
System.out.println("coming out no processing required");
}
}
}
В журналах для "yarn-cluster
" я вижу, что создаются два конкатайнера, и один из них завершается с ошибкой ниже:
18/05/09 18:21:51 WARN security.UserGroupInformation: PriviledgedActionException as:*****<uername> (auth:SIMPLE) cause:java.io.FileNotFoundException: File does not exist: hdfs://hostname/user/*****<uername>/.sparkStaging/application_1525778267559_0054/__spark_conf__.zip
Exception in thread "main" java.io.FileNotFoundException: File does not exist: hdfs://hostname/user/*****<uername>/.sparkStaging/application_1525778267559_0054/__spark_conf__.zip
at org.apache.hadoop.hdfs.DistributedFileSystem$20.doCall(DistributedFileSystem.java:1257)
at org.apache.hadoop.hdfs.DistributedFileSystem$20.doCall(DistributedFileSystem.java:1249)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1249)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$4$$anonfun$apply$3.apply(ApplicationMaster.scala:198)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$4$$anonfun$apply$3.apply(ApplicationMaster.scala:195)
at scala.Option.foreach(Option.scala:257)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$4.apply(ApplicationMaster.scala:195)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$4.apply(ApplicationMaster.scala:160)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$4.run(ApplicationMaster.scala:787)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920)
Не могли бы вы объяснить, почему это происходит и как спарк обрабатывает создание контейнера.