«Пользователь не инициализировал искровой контекст» Ошибка при использовании кода Scala в режиме кластера SPARK YARN - PullRequest
0 голосов
/ 02 декабря 2018

Чтобы сузить проблему, я удалил другие зависимости класса, и у меня есть этот чистый код:

object LoaderProcessor extends App {

val logger = LoggerFactory.getLogger(this.getClass())
execute()

def execute(): Unit = {

val spark = get_spark()
import spark.implicits._

var df = spark.read
  .format("csv")
  .option("delimiter", ",")
  .option("header", true)
  .option("inferSchema", "true")
  .option("timestampFormat", "yyyy/MM/dd HH:mm:ss")
  .load(args(2))

df = df.withColumn("zs_source", lit(1)) //the only operation on dataframe

val o_file = Config().getString("myapp.dataFolder") + "/8/1/data.csv"
logger.info("Writing output to: {}", o_file)

df.write.mode("overwrite")
.option("header", "true").csv(o_file)

}

def get_spark(): SparkSession = {
val env = System.getenv("MYAPP_ENV")
var spark:SparkSession = null
if (env == null || env == "dev_local") {
  spark = org.apache.spark.sql.SparkSession.builder
    .master("local")
    .appName("MyApp")
    .getOrCreate;
}else{
  spark = org.apache.spark.sql.SparkSession.builder
    .appName("MyApp")
    //.enableHiveSupport()
    .getOrCreate;
}
spark.sparkContext.setCheckpointDir(Config().getString("myapp.rddcp"))
return spark
}
}

Это хорошо работает в режиме клиента .Не смог разобраться в проблеме.У меня есть кластеры в HDInsight.

Также заметил, что операция «запись» продолжает запись в выходную папку следующим образом:

part-00000-3e9566ae-c13c-468a-8732-e7b8a8df5335-c000.csv


, а затем через несколько секунд:

part-00000-4f4979a0-d9f9-481b-aac4-115e63b9f59c-c000.csv


8/12/01 15:08:53 INFO ApplicationMaster: запуск пользовательского приложения в отдельном потоке 18/12/01 15:08:53 INFO ApplicationMaster: ожидание инициализации контекста искры ... 18/12/ 01 15:08:55 INFO Config $: Среда: dev 18/12/01 15:08:55 ОШИБКА ApplicationMaster: необработанное исключение: java.lang.IllegalStateException: пользователь не инициализировал контекст искры!в org.apache.spark.deploy.yarn.ApplicationMaster.runDriver (ApplicationMaster.scala: 510) в org.apache.spark.deploy.yarn.ApplicationMaster.org $ apache $ spark $ deploy $ yarn $ ApplicationMaster $$ runImpl (ApplicationMaster.scala: 345) в org.apache.spark.deploy.yarn.ApplicationMaster $$ anonfun $ run $ 2.apply $ mcV $ sp (ApplicationMaster.scala: 260) в org.apache.spark.deploy.yarn.ApplicationMaster $$anonfun $ run $ 2.apply (ApplicationMaster.scala: 260) в org.apache.spark.deploy.yarn.ApplicationMaster $$ anonfun $ run $ 2.apply (ApplicationMaster.scala: 260) в org.apache.spark.deploy.yarn.ApplicationMaster $$ anon $ 5.run (ApplicationMaster.scala: 815) в java.security.AccessController.doPrivileged (собственный метод) в javax.security.auth.Subject.doAs (Subject.java:422) в org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1869) при org.apache.spark.deploy.yarn.ApplicationMaster.doAsUser (ApplicationMaster.scala: 814) в org.apache.spark.deploy.yarn.ApplicationMaster.run (ApplicationMaster.scala: 259) вorg.apache.spark.deploy.yarn.ApplicationMaster $ .main (ApplicationMaster.scala: 839) в org.apache.spark.deploy.yarn.ApplicationMaster.main (ApplicationMaster.scala)

spark-submit --master yarn --deploy-mode cluster --jars "wasb://xx@yy/zs/jars/config-1.3.1.jar" --class myapp.LoaderProcessor "wasb://xx@yy/zs/jars/myapp.jar" l 8 /data/8_data.csv 1 , true false --> ПРОБЛЕМА

spark-submit --deploy-mode client --jars "wasb://xx@yy/zs/jars/config-1.3.1.jar" --class myapp.LoaderProcessor "wasb://xx@yy/zs/jars/myapp.jar" l 8 /data/8_data.csv 1 , true false -> РАБОТАЕТ !!!

1 Ответ

0 голосов
/ 02 декабря 2018

редактировать: обновляется согласно нашему обмену в комментариях

проблема в том, что вы всегда создаете локальный контекст с if (env == null || env == "dev_local") (MYAPP_ENV равно нулю в распределенной среде))

...