繁体   English   中英

使用sbt执行Spark-submit Scala时未找到Java类异常

[英]Java Class not Found Exception while doing Spark-submit Scala using sbt

这是我在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软件包编译时收到的错误是这里的图像

这是我的build.sbt文件

名称:=“ 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”

在Spark Versions> 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 package的目录中,所以sbt不会接它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM