Apache spark 使用云SQL代理从Dataproc连接到云SQL
我正在尝试通过云SQL代理(不使用配置单元)和Scala 2.11.12从Dataproc访问云SQL。在SO中也有类似的问题,但没有人能回答我面临的问题 我已经成功地将Dataproc连接到cloudsql,将spark.master置于“本地”模式,但是在使用“纱线”模式时,我遇到了一个异常,所以我肯定错过了一些东西。 我已经创建了GitHub repo,因此任何人都可以在本地进行测试,但您需要运行一个云SQL实例: 执行以下操作时,应用程序崩溃:Apache spark 使用云SQL代理从Dataproc连接到云SQL,apache-spark,google-cloud-sql,google-cloud-dataproc,Apache Spark,Google Cloud Sql,Google Cloud Dataproc,我正在尝试通过云SQL代理(不使用配置单元)和Scala 2.11.12从Dataproc访问云SQL。在SO中也有类似的问题,但没有人能回答我面临的问题 我已经成功地将Dataproc连接到cloudsql,将spark.master置于“本地”模式,但是在使用“纱线”模式时,我遇到了一个异常,所以我肯定错过了一些东西。 我已经创建了GitHub repo,因此任何人都可以在本地进行测试,但您需要运行一个云SQL实例: 执行以下操作时,应用程序崩溃: SparkSession .build
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)
线程“main”java.lang.NoSuchFieldError中的异常:ASCII
位于org.apache.hadoop.warn.api.records.impl.pb.ApplicationSubmissionContextPBImpl.checkTags(ApplicationSubmissionContextPBImpl.java:287)
位于org.apache.hadoop.warn.api.records.impl.pb.ApplicationSubmissionContextPBImpl.setApplicationTags(ApplicationSubmissionContextPBImpl.java:302)
位于org.apache.spark.deploy.warn.Client$$anonfun$createApplicationSubmissionContext$2.apply(Client.scala:245)
位于org.apache.spark.deploy.warn.Client$$anonfun$createApplicationSubmissionContext$2.apply(Client.scala:244)
位于scala.Option.foreach(Option.scala:257)
位于org.apache.spark.deploy.warn.Client.createApplicationSubmissionContext(Client.scala:244)
位于org.apache.spark.deploy.warn.Client.submitApplication(Client.scala:180)
位于org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:57)
位于org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:183)
位于org.apache.spark.SparkContext(SparkContext.scala:501)
位于org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2520)
位于org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:935)
位于org.apache.spark.sql.SparkSession$Builder$$anonfun$7.apply(SparkSession.scala:926)
位于scala.Option.getOrElse(Option.scala:121)
位于org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:926)
位于dev.ancor.somedataprocsparkjob.SomeSparkJob$.main(SomeSparkJob.scala:13)
在dev.ancor.somedataprocsparkjob.SomeSparkJob.main(SomeSparkJob.scala)
问题是:在“纱线”模式下运行时,为什么会出现这种异常,以及如何修复它?谢谢大家! 正如Gabe Weiss和David Rabinowitz所确认的,我们可以将Dataproc集群和云SQL放在VPC网络中,只需使用。无需使用云SQL代理。我最终使用了一个更好的解决方案来连接Dataproc和云SQL:将Dataproc集群和云SQL放在VPC网络中,只需使用内部ip即可。无需使用云SQL代理(您将获得更低的网络延迟!)。我正要说…:)在这种情况下,比尝试调用代理要好得多的解决方案。