Класс Java не найден исключение при выполнении Spark-submit Scala с использованием sbt - PullRequest
0 голосов
/ 14 ноября 2018

Вот мой код, который я написал в Scala

package normalisation

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.sql.SQLContext
import  org.apache.hadoop.fs.{FileSystem,Path}


object Seasonality {
 val amplitude_list_c1: Array[Nothing] = Array()
 val amplitude_list_c2: Array[Nothing] = Array()
 def main(args: Array[String]){
   val conf = new SparkConf().setAppName("Normalization")
   val sc = new SparkContext(conf)
   val sqlContext = new org.apache.spark.sql.SQLContext(sc)
   val line = "MP"
   val ps = "Test"
   val location = "hdfs://ipaddress/user/hdfs/{0}/ps/{1}/FS/2018-10-17".format(line,ps)
   val files = FileSystem.get(sc.hadoopConfiguration ).listStatus(new Path(location))
   for (each <- files) {
     var ps_data = sqlContext.read.json(each)

   }
   println(ps_data.show())
 }

Ошибка, которую я получил при компиляции с использованием пакета sbt: image

Вот мой файл build.sbt

name: = "OV"

scalaVersion: = "2.11.8"

// https://mvnrepository.com/artifact/org.apache.spark/spark-core libraryDependencies + = "org.apache.spark" %% "spark-core"% "2.3.1"

// https://mvnrepository.com/artifact/org.apache.spark/spark-sql libraryDependencies + = "org.apache.spark" %% "spark-sql"% "2.3.1"

1 Ответ

0 голосов
/ 14 ноября 2018

в версиях Spark> 2 вы обычно должны использовать SparkSession.Смотрите также https://spark.apache.org/docs/2.3.1/api/scala/#org.apache.spark.sql.SparkSession

и тогда вы сможете

val spark:SparkSession = ???
val location = "hdfs://ipaddress/user/hdfs/{0}/ps/{1}/FS/2018-10-17".format(line,ps)
spark.read.json(location)

прочитать все ваши файлы json в каталоге.

Также я думаю, что вы тожеполучите еще одну ошибку компиляции в

for (each <- files) {
  var ps_data = sqlContext.read.json(each)
}
println(ps_data.show())

для ps_data, находящегося вне области действия.

Если вам нужно по какой-то причине использовать SparkContext, оно действительно должно быть в spark-core.Вы пытались перезапустить IDE, очистить кеш и т. Д.?

РЕДАКТИРОВАТЬ: я просто замечаю, что build.sbt, вероятно, не находится в каталоге, откуда вы вызываете sbt package, поэтому sbt не будет забирать

...