【问题标题】:spark scala maven error: SparkConf does not have a constructorspark scala maven 错误:SparkConf 没有构造函数
【发布时间】:2019-11-30 01:46:53
【问题描述】:

我创建了一个 Maven 项目来运行 wordcount spark-scala 程序。在这里,当我创建我的 SparkConf 时,它给了我一个错误“org.apache.spark.SparkConf 没有构造函数”。 SparkContext 类似 (org.apache.spark.SparkContext 没有构造函数)

我已导入 SparkContext 和 SparkConf,并且还以正确的构造函数格式编写。这可能是 Maven 问题,但没有弹出与此相关的此类错误。

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf


object WordCount {

def main(args: Array[String]) {

val cf = new SparkConf().setAppName("WordCount").setMaster("local")

val sc = new SparkContext(cf)

val rawData = sc.textFile("C:/Users/siddharth.shankar/Documents/input.txt")

val words = rawData.flatMap(line => line.split(" "))

val wordCount = words.map(word => (word, 1)).reduceByKey(_ + _)

wordCount.foreach(println)


  } 

}

这是我的 pom.xml

   <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.devinline.spark</groupId>
 <artifactId>SparkSample2</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>SparkSample Maven Webapp</name>
 <url>http://maven.apache.org</url>
 <dependencies>
   <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.4.0</version>
    </dependency>
   <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
   </dependency>
  <dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-winutils</artifactId>
   <version>2.7.1</version>
  </dependency>  
</dependencies>
  <build>
    <finalName>SparkSample2</finalName>
  </build>
 </project>

我不知道这里的问题是什么,就好像我应用与常规 spark-scala(no maven) 应用程序相同的程序,程序运行时没有错误。

【问题讨论】:

  • 请在此处发布您的 pom.xml 文件。

标签: scala maven apache-spark


【解决方案1】:

检查这两种情况的 scala 版本是否相同? 它看起来像版本问题。我使用 maven 执行此代码,它适用于 scala 2.11。 即使使用 spark submit 也可以正常工作。

【讨论】:

  • 是的,当我将 scala 自然添加到我的程序时,我更改了 scala 版本。它本身是 2.11 版(内置)
【解决方案2】:

尝试添加:

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
...
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
            <scope>provided</scope>
        </dependency>
...
<build>
        <sourceDirectory>src/main/scala</sourceDirectory>

...
<plugins>
            <plugin>
                <!-- see http://davidb.github.com/scala-maven-plugin -->
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.3.1</version>
                    <configuration>
                        <compilerPlugins>
                            <compilerPlugin>
                                <groupId>com.artima.supersafe</groupId>
                                <artifactId>supersafe_${scala.version}</artifactId>
                                <version>1.1.3</version>
                            </compilerPlugin>
                        </compilerPlugins>
                    </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>
                            <args>
                                <arg>-feature</arg>
                                <arg>-deprecation</arg>
                                <arg>-dependencyfile</arg>
                                <arg>${project.build.directory}/.scala_dependencies</arg>
                            </args>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

【讨论】:

  • 我收到此错误:您必须以 : 格式指定有效的生命周期阶段或目标[:
【解决方案3】:
    </dependency>   
            <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.11.8</version>
    </dependency>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-reflect</artifactId>
        <version>2.11.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>           
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>

使用这些依赖就可以了。

【讨论】:

  • 是的,谢谢。我想我需要根据我一直在使用的内容指定更多的依赖项
猜你喜欢
  • 2018-08-20
  • 2017-11-22
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2015-09-19
  • 2012-07-14
相关资源
最近更新 更多