Apache spark 解决NoClassDefFoundError:org/apache/spark/Logging异常

Apache spark 解决NoClassDefFoundError:org/apache/spark/Logging异常,apache-spark,hadoop,hbase,maven-dependency,Apache Spark,Hadoop,Hbase,Maven Dependency,我正在试用hbase spark连接器。首先,我正在尝试代码 我的pom依赖项是: <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.0.0</version>

我正在试用hbase spark连接器。首先,我正在尝试代码

我的pom依赖项是:

<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-sql_2.11</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-spark</artifactId>
        <version>2.0.0-alpha4</version>
    </dependency>
</dependencies>

org.apache.spark
在github代码中

我查过了。它说我应该包括所有库的相同版本。早些时候,我的pom中有2.3.0版本的spark库。但我意识到,
hbase spark
有最新版本
2.0.0
。因此,我将所有spark库的版本降级为
2.0.0
。但我还是得到了同样的例外

或者我必须坚持使用
1.X.X
版本才能使用它,因为答案说它在1.5.2版之后被删除了?

肖恩·欧文建议“你根本不应该在你的应用程序中使用org.apache.spark.Logging。这可能就是问题和解决方案。”

因此,您应该使用以下或


公用记录
公用记录
1.1.1
更新

我指定了它,现在我得到了NoClassDefFoundError:org/apache/spark/streaming/dstream/dstream

对于上述问题,您需要以下依赖项

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.0.0</version>
    <scope>provided</scope>
</dependency>

org.apache.spark
spark-U 2.11
2.0.0
假如

(Q1)您的意思是说我应该添加您指定的依赖项吗?我指定了它,现在我得到了NoClassDefFoundError:org/apache/spark/streaming/dstream/dstream
。我错过了一些基本的东西吗?(Q2)我也不知道添加依赖项如何解决缺少的
日志记录
类异常。我没有在代码中的任何地方使用
日志记录
类。连接器似乎在内部使用该类。但是,如何通过添加依赖性来解决这个问题呢?只能通过添加包含
org.apache.spark.Logging
的依赖项来解决此问题。不是吗?我已经更新了我的答案。依赖项通过查看可用的依赖项来解决。您添加了apache commons日志记录,这有助于解决第一个依赖性问题。Spark本身也使用外部依赖项和包。我想获取hbase表中某列的前10个值的行键。为此,我可以使用hbase spark connector获取spark RDD中的所有值,然后通过spark sql在内存中执行排序吗?这会很快吗?或者我应该采取其他方法?或者它在HBase中使用任何框架都是不可行的。现在出于您的考虑,我想您可以编写spark sql查询来从Hbase中只获取前10条记录。是的,在HBASE中单独完成应该是可能的,如果您自己或在stackoverflow中找不到解决方案,欢迎您提出另一个问题
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.0.0</version>
    <scope>provided</scope>
</dependency>