java.lang.ClassNotFoundException:text.DefaultSource

java.lang.ClassNotFoundException:text.DefaultSource,java,scala,maven,apache-spark,intellij-idea,Java,Scala,Maven,Apache Spark,Intellij Idea,我有一个带有spark的scala maven应用程序。我使用Intellij的想法。我用它做了一个可执行jar,但当我试图通过windows控制台启动它时,出现了一个关于缺少某些类的错误。我无法确定是否存在问题,因为我已将其添加到.pom文件的块中。另外,当我查看.jar内部时,我看到了包含该类的库: .jar中需要的库: 我尝试使用两个插件:maven shade插件和maven assembly插件,结果是一样的。我试图通过Intellij中的project structure->lib

我有一个带有spark的scala maven应用程序。我使用Intellij的想法。我用它做了一个可执行jar,但当我试图通过windows控制台启动它时,出现了一个关于缺少某些类的错误。我无法确定是否存在问题,因为我已将其添加到.pom文件的块中。另外,当我查看.jar内部时,我看到了包含该类的库:

.jar中需要的库:

我尝试使用两个插件:maven shade插件和maven assembly插件,结果是一样的。我试图通过Intellij中的project structure->libraries在类路径中显式设置这个库:

IDEA中的类路径:

任何帮助都将不胜感激! 这是我的密码:

import org.apache.spark.broadcast.Broadcast
import org.apache.spark.ml.recommendation.{ALS, ALSModel}
import org.apache.spark.sql.functions._
import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}
import scala.collection.{Map, Set}
import scala.collection.mutable.ArrayBuffer
import scala.util.Random
object RunRecommender {

  def main(args: Array[String]): Unit = {
    val spark: SparkSession =SparkSession.builder()
      .master("local")
      .appName("Recommender Engines with Audioscrobbler data")
      .config("spark.sql.warehouse.dir", "spark-warehouse")
      .getOrCreate()

    val rawUserArtistData: Dataset[String] = spark.read.textFile("user_artist_data.txt")
    val rawArtistData: Dataset[String] = spark.read.textFile("artist_data.txt")
    val rawArtistAlias: Dataset[String] = spark.read.textFile("artist_alias.txt")

    val runRecommender: RunRecommender = new RunRecommender(spark)
    runRecommender.preparation(rawUserArtistData, rawArtistData, rawArtistAlias)
    runRecommender.model(rawUserArtistData, rawArtistData, rawArtistAlias)
    runRecommender.evaluate(rawUserArtistData, rawArtistAlias)
    runRecommender.recommend(rawUserArtistData, rawArtistData, rawArtistAlias)
  }

}
这是我的.pom文件:

<?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>recommends</groupId>
    <artifactId>recommends</artifactId>
    <packaging>jar</packaging>
    <name>Recommender Engine with Audioscrobbler data</name>
    <version>1.0-SNAPSHOT</version>

    <repositories>
    <repository>
        <id>mavencentral</id>
        <name>Maven Central</name>
        <url>https://repo1.maven.org/maven2/</url>
        <layout>default</layout>
    </repository>
    </repositories>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>net.alchim31.maven</groupId>
                    <artifactId>scala-maven-plugin</artifactId>
                    <version>3.2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.0.2</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.1</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>RunRecommender</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                    <executions>
                        <execution>
                            <id>scala-compile-first</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>add-source</goal>
                                <goal>compile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>scala-test-compile</id>
                            <phase>process-test-resources</phase>
                            <goals>
                                <goal>testCompile</goal>
                            </goals>
                        </execution>
                    </executions>
            </plugin>
            <plugin>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>RunRecommender</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.11</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.10</artifactId>
            <version>2.0.0</version>
        </dependency>
    </dependencies>

</project>

我有一个长相相似的问题,对我来说,maven中的这个元素缺失了:


org.apache.spark
spark-sql_2.11
2.3.2

我有一个长相相似的问题,对我来说,maven中的这个元素缺失了:


org.apache.spark
spark-sql_2.11
2.3.2

只有当您尝试使用spark submit运行jar而不是终端中的java-jar来运行同一个jar时,才能轻松解决此问题。

只有当您尝试使用spark submit运行jar而不是终端中的java-jar来运行同一个jar时,才能轻松解决此问题。

它正在寻找一个完全限定名为
text.DefaultSource
。您显示为屏幕截图的目录是针对包
org.apache.spark.sql.execution.datasources.text
。感谢您的评论!我应该在哪里添加它?添加什么?我不知道你在问什么——我也不知道解决办法,我只是认为它能帮助你诊断。这对我很有帮助。我遇到了一个问题,因为java.lang.ClassNotFoundException:.DefaultSource导致我获取此日志行
。这让我注意到,在我们的代码中将输出类型的字符串名设置为
,其中有一个错误。它正在寻找一个完全限定名为
text.DefaultSource
的类。您显示为屏幕截图的目录是针对包
org.apache.spark.sql.execution.datasources.text
。感谢您的评论!我应该在哪里添加它?添加什么?我不知道你在问什么——我也不知道解决办法,我只是认为它能帮助你诊断。这对我很有帮助。我遇到了一个问题,因为java.lang.ClassNotFoundException:.DefaultSource
导致我获取此日志行
。这让我注意到,在我们的代码中将输出类型的字符串名称设置为
”时出现了一个错误。这是一个注释还是一个答案?如果这是一个答案,您能否详细说明spark submit的输出将增加哪些内容,以及如何使用这些内容来解决问题?这是一个评论,还是一个答案?如果这是一个答案,您能否详细说明spark submit的输出将增加哪些内容,以及如何使用这些内容来解决这个问题?
16/11/06 11:56:40 WARN SparkContext: Use an existing SparkContext, some configuration may not take effect.
16/11/06 11:56:40 INFO SharedState: Warehouse path is 'spark-warehouse'.
Exception in thread "main" java.lang.ClassNotFoundException: Failed to find data source: text. Please find packages at http://spark-packages.org
        at org.apache.spark.sql.execution.datasources.DataSource.lookupDataSource(DataSource.scala:145)
        at org.apache.spark.sql.execution.datasources.DataSource.providingClass$lzycompute(DataSource.scala:78)
        at org.apache.spark.sql.execution.datasources.DataSource.providingClass(DataSource.scala:78)
        at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:310)
        at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:149)
        at org.apache.spark.sql.DataFrameReader.text(DataFrameReader.scala:492)
        at org.apache.spark.sql.DataFrameReader.textFile(DataFrameReader.scala:528)
        at org.apache.spark.sql.DataFrameReader.textFile(DataFrameReader.scala:501)
        at RunRecommender$.main(RunRecommender.scala:20)
        at RunRecommender.main(RunRecommender.scala)
Caused by: java.lang.ClassNotFoundException: text.DefaultSource
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$5$$anonfun$apply$1.apply(DataSource.scala:130)
        at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$5$$anonfun$apply$1.apply(DataSource.scala:130)
        at scala.util.Try$.apply(Try.scala:192)
        at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$5.apply(DataSource.scala:130)
        at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$5.apply(DataSource.scala:130)
        at scala.util.Try.orElse(Try.scala:84)
        at org.apache.spark.sql.execution.datasources.DataSource.lookupDataSource(DataSource.scala:130)
        ... 9 more
16/11/06 11:56:40 INFO SparkContext: Invoking stop() from shutdown hook
1