Intellij에서 Apache Spark 및 Scala로 작업하고 있습니다. Maven에 대한 경험이 없습니다. 간단한 WordCount 프로그램을 구성하고 JDK 11, Scala 2.12.12 및 Spark 3.0.1을 사용하려고합니다. 프로젝트는 잘 컴파일되지만 실행시 다음과 같은 오류가 발생합니다.
Exception in thread "main" java.lang.NoSuchMethodError: 'void scala.util.matching.Regex.<init>(java.lang.String, scala.collection.Seq)'
at scala.collection.immutable.StringLike.r(StringLike.scala:284)
at scala.collection.immutable.StringLike.r$(StringLike.scala:284)
at scala.collection.immutable.StringOps.r(StringOps.scala:33)
at scala.collection.immutable.StringLike.r(StringLike.scala:273)
at scala.collection.immutable.StringLike.r$(StringLike.scala:273)
at scala.collection.immutable.StringOps.r(StringOps.scala:33)
at org.apache.spark.util.Utils$.<init>(Utils.scala:104)
at org.apache.spark.util.Utils$.<clinit>(Utils.scala)
at org.apache.spark.SparkConf.loadFromSystemProperties(SparkConf.scala:75)
at org.apache.spark.SparkConf.<init>(SparkConf.scala:70)
at org.apache.spark.SparkConf.<init>(SparkConf.scala:59)
at WordCount$.main(WordCount.scala:9)
at WordCount.main(WordCount.scala)
이 오류의 가장 일반적인 원인을 확인했습니다. provided
Spark-core 종속성 이 없으며 compile
Spark 및 Scala 버전이 최신 버전입니다.
다음은 코드입니다.
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object WordCount {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Spark Scala WordCount Example").setMaster("local[1]")
val sc = new SparkContext(conf)
var map = sc.textFile("/Users/<username>/Downloads/TestFile.csv").flatMap(line => line.split(",")).map(word => (word,1))
var counts = map.reduceByKey(_ + _)
counts.collect().foreach(println)
sc.stop()
}
}
그리고 이것은 내가 사용한 pom.xml입니다.
<?xml version="1.0" encoding="UTF-8"?>
<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>com.org.example</groupId>
<artifactId>Project</artifactId>
<version>1.0-SNAPSHOT</version>
<inceptionYear>2008</inceptionYear>
<packaging>jar</packaging>
<properties>
<scala.version>2.12.12</scala.version>
<spark.version>3.0.1</spark.version>
</properties>
<repositories>
<repository>
<id>scala-tools.org</id>
<name>Scala-Tools Maven2 Repository</name>
<url>http://scala-tools.org/repo-releases</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>scala-tools.org</id>
<name>Scala-Tools Maven2 Repository</name>
<url>http://scala-tools.org/repo-releases</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>org.specs</groupId>
<artifactId>specs</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>${spark.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>${spark.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/main/scala</sourceDirectory>
<resources><resource><directory>src/main/resources</directory></resource></resources>
<plugins>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<configuration>
<scalaVersion>${scala.version}</scalaVersion>
</configuration>
</plugin>
</plugins>
</reporting>
</project>
이전에 sbt로 동일한 프로그램을 실행 해 보았지만 완전히 잘 작동했지만 항상 maven 에서이 오류를 반환합니다.
이것이 프로젝트에 정의 된 Scala SDK의 문제라고 생각합니다.
pom.xml
새 IDEA 프로젝트에 복사했을 때 `No Scala SDK Module '오류가 발생했습니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "프레임 워크 지원 추가"를 선택할 수 있습니다.
그런 다음 Scala와 적절한 버전을 선택하십시오. 이 작업을 수행하고 main
기능을 실행하면 제대로 실행되었습니다.
이미 Scala 버전이 설정되어 있으면로 이동 File -> Project Structure -> Global Libraries
하여 프로젝트에 적합한 Scala SDK가 정의되어 있는지 확인하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected]om 삭제
몇 마디 만하겠습니다