У меня есть простой Scala-код Spark, который я пытаюсь запустить на spark2 в Cloudera [5.15.0], работающем на AWS EC2. Я создал этот проект в [Scala IDE] на компьютере Mac. 1 [] 2
Я использую clean package assembly:single
для изготовления банки
следующий код
package com.upGrad
import org.apache.spark._
import org.apache.spark.sql._
import org.apache.spark.{ SparkConf, SparkContext }
import org.apache.log4j._
object Driver {
def main(args: Array[String]): Unit = {
val path:String = args(0)
Logger.getLogger("org").setLevel(Level.ERROR)
val conf = new SparkConf().setAppName("Read CSV File")
val sc = new SparkContext(conf)
val textRDD = sc.textFile(path)
// textRDD.foreach(println)
// filter the header
val empRdd = textRDD.filter(x => x.split(",")(0).!=("empno"))
//empRdd2.foreach(println)
// format the values
val empRdd1 = empRdd.map {
line =>
val col = line.split(",")
val line2: String = col(0).reverse.padTo(10, '0').reverse + " "+ // lpad()
col(1).padTo(10,' ') +" "+ // rpad()
col(2).padTo(10,' ') +" "+
col(3).padTo(5,' ') +" "+
col(4).padTo(10,'0') +" "+
col(5).reverse.padTo(10, '0').reverse + " "+
col(6).reverse.padTo(2, ' ').reverse
line2
}
empRdd1.foreach(println)
// empRdd1.coalesce(1).saveAsTextFile("results4")
}
}
файл pom выглядит следующим образом
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>upGrad</groupId>
<artifactId>test4</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>test4</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.10.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
</project>
Я использую следующую команду для запуска файла jar и получения исключения для класса not found. Пожалуйста, помогите
spark2-submit --class com.upGrad.Driver test4-0.0.1-SNAPSHOT.jar /user/ec2-user/scalaData/emp_data.csv
java.lang.ClassNotFoundException: com.upGrad.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.spark.util.Utils$.classForName(Utils.scala:235)
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:197)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:227)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
19/01/16 17:24:15 INFO util.ShutdownHookManager: Shutdown hook called
19/01/16 17:24:15 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-b82ec67c-79dd-4294-be2d-ac7e8b868867
[ec2-user@ip-172-31-43-189 SparkScala]$