Я пытаюсь получить доступ к Cloud SQL из Datapro c через Cloud SQL Proxy (без использования Hive) и использую Scala 2.11.12. В SO есть похожие вопросы, но ни у одного из них нет ответа на проблему, с которой я сталкиваюсь.
Мне удалось подключить Datapro c к Cloud SQL, переведя spark.master в "локальный" режим но я получаю исключение при использовании режима «пряжа», поэтому я определенно что-то упускаю. Я создал репозиторий GitHub, чтобы любой мог проводить локальное тестирование, но вам нужно будет запустить экземпляр Cloud SQL: https://github.com/mikela/SomeDataprocSparkJob
Приложение аварийно завершает работу при выполнении:
SparkSession
.builder()
.appName("SomeSparkJob")
.getOrCreate()
Исключение, которое я получаю, когда задание отправляется, и оно выполняет .getOrCreate()
выше:
Exception in thread "main" java.lang.NoSuchFieldError: ASCII
at org.apache.hadoop.yarn.api.records.impl.pb.ApplicationSubmissionContextPBImpl.checkTags(ApplicationSubmissionContextPBImpl.java:287)
at org.apache.hadoop.yarn.api.records.impl.pb.ApplicationSubmissionContextPBImpl.setApplicationTags(ApplicationSubmissionContextPBImpl.java:302)
at org.apache.spark.deploy.yarn.Client$$anonfun$createApplicationSubmissionContext$2.apply(Client.scala:245)
at org.apache.spark.deploy.yarn.Client$$anonfun$createApplicationSubmissionContext$2.apply(Client.scala:244)
at scala.Option.foreach(Option.scala:257)
at org.apache.spark.deploy.yarn.Client.createApplicationSubmissionContext(Client.scala:244)
at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:180)
at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:57)
at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:183)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:501)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2520)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:935)
at org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:926)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:926)
at dev.ancor.somedataprocsparkjob.SomeSparkJob$.main(SomeSparkJob.scala:13)
at dev.ancor.somedataprocsparkjob.SomeSparkJob.main(SomeSparkJob.scala)
Вопрос: почему я получаю это исключение при работе на «пряже» режим и как мне это исправить? Спасибо!