Я сталкиваюсь со странной проблемой при попытке запустить мое scala spark-приложение с помощью spark-submit (работает нормально при выполнении sbt run
).Все это выполняется локально.
У меня есть стандартное объявление sparkSession:
val spark: SparkSession = SparkSession
.builder()
.master("local[*]")
.appName("EPGSubtitleTimeSeries")
.getOrCreate()
, но при попытке запустить его через spark-submit выполните следующие действия:
./bin/spark-submit --packages org.apache.hadoop:hadoop-aws:2.7.3 --master local[2] --class com.package.EPGSubtitleTimeSeries --conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem /home/jay/project/tv-data-pipeline/target/scala-2.12/epg-subtitles_2.12-0.1.jar
Я получил эту ошибку:
Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;
at com.project.Environment$.<init>(EPGSubtitleTimeSeries.scala:55)
at com.project.Environment$.<clinit>(EPGSubtitleTimeSeries.scala)
at com.project.EPGSubtitleJoined$.$anonfun$start_incremental_load$1(EPGSubtitleTimeSeries.scala:409)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.immutable.Set$Set3.foreach(Set.scala:163)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
at scala.collection.AbstractSet.scala$collection$SetLike$$super$map(Set.scala:47)
at scala.collection.SetLike$class.map(SetLike.scala:92)
at scala.collection.AbstractSet.map(Set.scala:47)
at com.package.EPGSubtitleJoined$.start_incremental_load(EPGSubtitleTimeSeries.scala:408)
at com.package.EPGSubtitleTimeSeries$.main(EPGSubtitleTimeSeries.scala:506)
at com.package.EPGSubtitleTimeSeries.main(EPGSubtitleTimeSeries.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:849)
at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Который я сузил с помощью нескольких отпечатков, чтобы убедиться, что именно эта строка его производит:
val EPG_OUTPUT_COLUMNS: Array[String] = EPG_SCHEDULE_OUTPUT_COLUMNS ++ Array("subtitle_channel_title", "epg_channel_title", "channelTitle")
From:
val EPG_SCHEDULE_OUTPUT_COLUMNS = Array(
"program_title",
"epg_titles",
"series_title",
"season_title",
"date_time",
"duration",
"short",
"medium",
"long",
"start_timestamp",
"end_timestamp",
"epg_year_month",
"epg_day_of_month",
"epg_hour_of_day",
"epg_genre",
"channelId"
)
val EPG_OUTPUT_COLUMNS: Array[String] = EPG_SCHEDULE_OUTPUT_COLUMNS ++ Array("subtitle_channel_title", "epg_channel_title", "channelTitle")
Я использую spark 2.4.4 и scala 2.12.8, а также joda-time 2.10.1 (никаких других зависимостей от моего build.sbt)
кто-нибудь имеет представление о том, что ошибка?