[英]Getting Spark Logging class not found when using Spark SQL
我正在尝试用 Java 进行简单的 Spark SQL 编程。 在程序中,我从 Cassandra 表中获取数据,将RDD
转换为Dataset
并显示数据。 当我运行spark-submit
命令时,出现错误: java.lang.ClassNotFoundException: org.apache.spark.internal.Logging
。
我的程序是:
SparkConf sparkConf = new SparkConf().setAppName("DataFrameTest")
.set("spark.cassandra.connection.host", "abc")
.set("spark.cassandra.auth.username", "def")
.set("spark.cassandra.auth.password", "ghi");
SparkContext sparkContext = new SparkContext(sparkConf);
JavaRDD<EventLog> logsRDD = javaFunctions(sparkContext).cassandraTable("test", "log",
mapRowTo(Log.class));
SparkSession sparkSession = SparkSession.builder().appName("Java Spark SQL").getOrCreate();
Dataset<Row> logsDF = sparkSession.createDataFrame(logsRDD, Log.class);
logsDF.show();
我的 POM 依赖项是:
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.11</artifactId>
<version>2.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.11</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
我的spark-submit
命令是: /home/ubuntu/spark-2.0.2-bin-hadoop2.7/bin/spark-submit --class "com.jtv.spark.dataframes.App" --master local[4] spark.dataframes-0.1-jar-with-dependencies.jar
我该如何解决这个错误? 降级到1.5.2
不起作用,因为1.5.2
没有org.apache.spark.sql.Dataset
和org.apache.spark.sql.SparkSession
。
这可能是您 IDE 的问题。 由于其中一些包是创建的并且 Scala 是 Java 项目,因此有时 IDE 无法理解发生了什么。 我正在使用 Intellij,它一直向我显示此消息。 但是,当我尝试运行“mvn test”或“mvn package”时,一切都很好。 请检查这是否真的是某个包错误或只是丢失的 IDE。
Spark Logging 可用于 Spark 1.5.2
及更低版本,但不能用于更高版本。 所以你在pom.xml
的依赖应该是这样的:
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.5.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.10</artifactId>
<version>1.5.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>1.5.2</version>
</dependency>
</dependencies>
请让我知道它是否有效。
以下依赖项适用于我的情况。
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>
参加聚会很晚了,但我补充说
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.1</version>
<scope>provided</scope>
</dependency>
为了解决这个问题。 似乎适用于我的情况。
确保 pom.xml 中有正确的 spark 版本。
以前,在本地,我有不同版本的 Spark,这就是我在 IntelliJ IDE 中收到错误的原因。 “无法访问 Spark.logging 类”
就我而言,将其从 2.4.2 -> 2.4.3 更改,它解决了。
Spark 版本和 Scala 版本信息,我们可以从 spark-shell 命令获取。
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.4.3</version>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.