4.2.1hbase用eclipse建表一直不成功

hbase用eclipse建表一直不成功,提示:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HTableDescriptor.addFamily
什么原因?怎么解决?
在~/workspace/hbase-chinahadoop/target下运行mvn eclipse:clean,然后mvn eclipse:eclipse,然后运行mvn clean,然后mvn package,然后hadoop jar hbase-chinahadoop-0.0.1-SNAPSHOT.jar com.chinahadoop.testbasicapi.TestBasicApi然后就会出现上面所说的提示,然后就建表一直不成功

vitocorleone

赞同来自:

[root@dx2-1 hbase-chinahadoop]# cat pom.xml <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/ma ... gt%3B   <modelVersion>4.0.0</modelVersion>   <groupId>com.sogou</groupId>   <artifactId>hbase-chinahadoop</artifactId>   <version>0.0.1-SNAPSHOT</version>   <name>testbasichbaseapi</name>      <repositories>                         <repository>                                         <id>central</id>                                         <name>Central Repository</name>                                         <url>http://repo.maven.apache.org/maven2</url>                                         <layout>default</layout>                                         <snapshots>                                                         <enabled>false</enabled>                                         </snapshots>                         </repository>                          <repository>                                         <id>github-releases</id>                                         <url>http://oss.snoatype.org/conten ... gt%3B                         </repository>                         <repository>                                         <id>clojars.org</id>                                         <url>http://clojars.org/repo</url>                         </repository>                         <repository>                                         <id>sogou.repo</id>                                         <url>http://cloud.sogou-inc.com/nex ... gt%3B                                         <name>Sogou Repository</name>                         </repository>                         <repository>                                         <id>sogou.repo.old</id>                                         <url>http://10.12.8.218:8080/nexus/ ... gt%3B                                         <name>Old Sogou Repository</name>                         </repository>   </repositories>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    </properties>   <dependencies> <dependency>     <groupId>org.apache.hadoop</groupId>     <artifactId>hadoop-client</artifactId>     <version>2.6.0</version> </dependency> <dependency>     <groupId>org.apache.hbase</groupId>     <artifactId>hbase-client</artifactId>     <version>1.0.0</version> </dependency>       <dependency>             <groupId>junit</groupId>             <artifactId>junit</artifactId>             <version>3.8.1</version>             <scope>test</scope>       </dependency>   </dependencies> </project>

wangxiaolei

赞同来自:

pom.xml文件配置的内容是什么?

wangxiaolei

赞同来自:

若是cdh版本的,请配置:
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>2.6.0-cdh5.4.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-client</artifactId>
        <version>1.0.0-cdh5.4.8</version>
    </dependency>
还有写的代码发出来看看。

wangxiaolei

赞同来自:

为什么配置搜狗的sogou.repo

vitocorleone

赞同来自:

package com.chinahadoop.testbasicapi; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MasterNotRunningException; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.ZooKeeperConnectionException; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.util.Bytes; public class TestBasicApi {         public static void main(String args) throws MasterNotRunningException, ZooKeeperConnectionException, IOException {                 // TODO Auto-generated method stub                         Configuration conf=HBaseConfiguration.create();                         conf.set(HConstants.ZOOKEEPER_QUORUM,"dx2-1" );                         conf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, 2181);                         HBaseAdmin ha = new HBaseAdmin(conf);                         TableName name = TableName.valueOf(Bytes.toBytes("test_table"));                         HTableDescriptor desc = new HTableDescriptor(name);                         HColumnDescriptor family = new HColumnDescriptor(Bytes.toBytes("testfml"));                         desc.addFamily(family);                         ha.createTable(desc);                         ha.close();         } } 和教学视频上大部分一样,只是把挺长的一个内容换成了dx2-1

wangxiaolei

赞同来自:

你的集群版本是cdh的? dx2-1是你的zookeeper服务器吗?

wangxiaolei

赞同来自:

cdh版本的没有放到http://mvnrepository.com/上面,所以是找不到的。 但是cdh版本的代码是开源的,可以在github上找到。 连接地址是: https://github.com/cloudera/hb ... m.xml
1465273010300.png
1465273301577.png
 

要回复问题请先登录注册