2015-06-24 2 views
1

Я установил hadoop 2.5.2 и hbase 1.0.1.1 (которые совместимы друг с другом). Но в коде hadoop я пытаюсь добавить columnfamily в таблицу hbase.NoSuchMethodError HTableDescriptor.addFamily

Мой код

Configuration hbaseConfiguration = HBaseConfiguration.create(); 
Job hbaseImportJob = new Job(hbaseConfiguration, "FileToHBase"); 


HBaseAdmin hbaseAdmin = new HBaseAdmin(hbaseConfiguration); 

if (!hbaseAdmin.tableExists(Config_values.tableName)) {   
    TableName tableName1 = TableName.valueOf("tableName"); 
    HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName1); 
    HColumnDescriptor hColumnDescriptor1 = new HColumnDescriptor("columnFamily1");         
    hTableDescriptor.addFamily(hColumnDescriptor1);         
    hbaseAdmin.createTable(hTableDescriptor); 
} 

Я получаю эту ошибку

java.lang.NoSuchMethodError: Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V at com.atm_ex.atm_ex.Profiles.profiles(Profiles.java:177) at com.atm_ex.atm_ex.App.main(App.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

ответ

0

Соответствующие HBase файлы JAR должны быть включены в работу MapReduce. Проверьте this Блог Cloudera для получения более подробной информации.

+0

Я бегу мой Hadoop код, используя HADOOP_CLASSPATH = '$ {HBASE_HOME}/bin/HBase целевых classpath' $ HADOOP_HOME/бен/Hadoop банку/Prog-1,0-SNAPSHOT.jar –

0

Я тоже столкнулся с такой ошибкой! Но в другом сценарии: я скомпилировал свою банку с помощью hbase-0.98, хотя я запускаю ее с помощью hbase-1.0.1.1.

Наконец я обнаружил, что в HBase-0,98, метод подписи

, НО в HBase-1.0.1.1 это

Есть другой!

По соображениям безопасности, вы должны использовать ту же самую версию hbase для компиляции и запуска вашей банки.

1

По соображениям безопасности, вы должны использовать ту же самую версию hbase для компиляции и запуска вашей банки. когда вы запускаете mvn clean package -DskipTests = true, убедитесь, что ваша зависимость pb hbase соответствует вашей cdh hbase, а не версии, но тот же самый метод, который он содержит, cdh не может следовать за apache orign. Возможно, вы можете попробовать использовать pom (репозиторий maven), который поддерживает cdh на этом веб-сайте.

<name>c-cdh-maven-dep</name> 
<!--- you need try both --> 
    <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> 
    <!--- i have tried this and it works well --> 
    <!-- <url>http://maven.apache.org</url> --> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 


    <!-- <repositories> <repository> <id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> 
     </repository> </repositories> --> 

    <dependencies> 
     <!-- <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> 
      <version>3.8.1</version> <scope>test</scope> </dependency> --> 

     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-common</artifactId> 
      <version>2.6.0-cdh5.7.0</version> 
     </dependency> 

    <!-- <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-hdfs</artifactId> 
      <version>2.6.0-cdh5.7.0</version> 
     </dependency> --> 
<!--  <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-maven-plugins</artifactId> 
      <version>2.6.0-cdh5.7.0</version> 
     </dependency> --> 
     <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-client</artifactId> 
      <version>1.2.0-cdh5.7.0</version> 
     </dependency> 
<!--  <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-client</artifactId> 
      <version>1.2.0</version> 
     </dependency> --> 


     <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-hadoop2-compat</artifactId> 
      <version>1.2.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.10</artifactId> 
      <version>1.5.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-sql_2.10</artifactId> 
      <version>1.5.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-hive_2.10</artifactId> 
      <version>1.5.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-streaming_2.10</artifactId> 
      <version>1.5.1</version> 
     </dependency> 

     <!-- hadoop dependency start --> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-client</artifactId> 
      <version>2.6.0</version> 
     </dependency> 
     <!-- Hadoop dep end --> 

     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-streaming-kafka_2.10</artifactId> 
      <version>1.5.1</version> 
     </dependency> 
     <!-- spark dep end --> 

     <dependency> 
      <groupId>org.clojure</groupId> 
      <artifactId>clojure</artifactId> 
      <version>1.6.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>11.0.2</version> 
     </dependency> 

     <dependency> 
      <groupId>com.google.protobuf</groupId> 
      <artifactId>protobuf-java</artifactId> 
      <version>2.5.0</version> 
     </dependency> 
     <dependency> 
      <groupId>io.netty</groupId> 
      <artifactId>netty</artifactId> 
      <version>3.6.6.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.zookeeper</groupId> 
      <artifactId>zookeeper</artifactId> 
      <version>3.4.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.cloudera.htrace</groupId> 
      <artifactId>htrace-core</artifactId> 
      <version>2.01</version> 
     </dependency> 


    <!-- <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase</artifactId> 
      <version>2.0.0-SNAPSHOT</version> 
      <type>pom</type> 
     </dependency> --> 



     <!-- hbase dep start --> 
     <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase --> 
<!--  <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase</artifactId> 
      <version>1.2.0</version> 
      <type>pom</type> 
     </dependency> --> 



<!--  <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-common</artifactId> 
      <version>1.0.0</version> 
     </dependency> --> 
     <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-server</artifactId> 
      <version>1.2.0</version> 
     </dependency> 
Смежные вопросы