无法解析符号hbase

bt1cpqcv  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(799)

我是hbase的新手,我从internet上复制了一个java代码示例,但是在构建这个示例时遇到了一个错误“cannotresolve symbol hbase”。我使用gradle构建这个示例项目,intellij作为ide。hbase服务器是一个远程服务器,我试图在我的windows笔记本电脑上编写一个put示例来测试hbase,但是我不熟悉hbase和gradle,有人能告诉我遗漏了什么吗?这是我的密码

import java.io.IOException;

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.TableName;
    import org.apache.hadoop.hbase.client.Connection;
    import org.apache.hadoop.hbase.client.ConnectionFactory;
    import org.apache.hadoop.hbase.client.Put;
    import org.apache.hadoop.hbase.client.Table;
    import org.apache.hadoop.hbase.util.Bytes;

    public class PutHbaseClient {
        public static void main(String[] args) throws IOException {
            Configuration conf = HBaseConfiguration.create();

            Connection connection = ConnectionFactory.createConnection(conf);
            Table table = connection.getTable(TableName.valueOf("test"));
            try {
                /*
                 * Put operations for a single row. To perform a
                 * Put, instantiate a Put object with the row to insert to and for
                 * each column to be inserted, execute addcolumn.
                 */
                Put put1 = new Put(Bytes.toBytes("row1"));
                Put put2 = new Put(Bytes.toBytes("row2"));
                Put put3 = new Put(Bytes.toBytes("row3"));
                put1.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual1"),
                        Bytes.toBytes("ValueOneForPut1Qual1"));
                put2.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual1"),
                        Bytes.toBytes("ValueOneForPut2Qual1"));
                put3.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual1"),
                        Bytes.toBytes("ValueOneForPut2Qual1"));
                put1.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual2"),
                        Bytes.toBytes("ValueOneForPut1Qual2"));
                put2.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual2"),
                        Bytes.toBytes("ValueOneForPut2Qual2"));
                put3.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qual2"),
                        Bytes.toBytes("ValueOneForPut3Qual3"));
                table.put(put1);
                table.put(put2);
                table.put(put3);
            } finally {
                table.close();
                connection.close();
            }
        }

    }

这是我的身材

plugins {
    id 'java'
}

group 'gid'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()

}

dependencies {

    compile group: 'org.apache.hadoop', name: 'hadoop-common', version:'2.7.3'

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

wmomyfyw

wmomyfyw1#

我想你需要像这样的东西在你的gradle依赖中:

compile 'org.apache.hbase:hbase:3.0.0-SNAPSHOT'
z9smfwbn

z9smfwbn2#

据一个jarfinder网站称 org.apache.hadoop.hbase.TableName 类位于hbase公共jar文件中。
这意味着build.gradle文件中的依赖项应该可以工作。但是,我不认为版本号是正确的。maven central中最新的2.x版本是2.2.2(而3.0.0快照不存在。。。当然。。。因为maven central不托管快照工件!)
但是,我建议您按照hbase文档中的说明进行操作(此处):
对于使用maven的java应用程序,包括 hbase-shaded-client 模块是连接到群集时建议的依赖项。“
对应的渐变依赖关系是:

// https://mvnrepository.com/artifact/org.apache.hbase/hbase-shaded-client
compile group: 'org.apache.hbase', name: 'hbase-shaded-client', version: '2.2.2'

我对gradle不太熟悉,但我预计会出现另一条错误消息,说明它无法解析hbase common version 2.7.3的依赖关系。

相关问题