Apache spark 2.3 基于 Apache HBase 2.0

Apache spark 2.3 over Apache HBase 2.0

需要在 HBase 上添加 spark 连接器,其中

Spark 版本: 2.3.1
HBase 版本:2.0.0

获取波纹管异常:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.spark.deploy.SparkHadoopUtil.getCurrentUserCredentials()Lorg/apache/hadoop/security/Credentials;
    at org.apache.hadoop.hbase.spark.HBaseContext.<init>(HBaseContext.scala:68)
    at org.apache.hadoop.hbase.spark.JavaHBaseContext.<init>(JavaHBaseContext.scala:46)
    at com.cloud.databaseroot.hbase.spark.JavaHBaseBulkPutExample.main(JavaHBaseBulkPutExample.java:60)

快照来自 pom.xml:

    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-spark</artifactId>
        <version>2.0.0-alpha4</version>
        <exclusions>
            <exclusion>
                <artifactId>jackson-module-scala_2.10</artifactId>
                <groupId>com.fasterxml.jackson.module</groupId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency> 
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>4.1.17.Final</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-scala_2.11</artifactId>
        <version>2.8.8</version>
    </dependency> 

让我知道哪里错了。

hbase-spark 版本 2.0.0-alpha4 似乎与 Spark 2.3.1 不兼容。 SparkHadoopUtil.getCurrentUserCredentials 方法在 Spark 版本 <= 2.2 中可用。降级 Spark 或使用 Spark 2.3.1 构建 hbase-spark,这可能需要更改其中的一些代码。