0

J'ai écrit un client hbase java comme suit.Hbase ResultScanner lève une exception de pointeur nul

package hbase; 

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.Result; 
import org.apache.hadoop.hbase.client.ResultScanner; 
import org.apache.hadoop.hbase.client.Scan; 
import org.apache.hadoop.hbase.client.Table; 

public class Sample { 


    public static void main(String[] args) throws IOException{ 
     // Instantiating Configuration class 
      System.out.println("Trying to connect..."); 

      Configuration conf = HBaseConfiguration.create(); 
      System.out.println("HBase is running!"); 

      Connection conn = ConnectionFactory.createConnection(conf); 
      Table table = conn.getTable(TableName.valueOf("demo")); 
      Scan scan1 = new Scan(); 

      ResultScanner scanner1 = table.getScanner(scan1); 

      for(Result res: scanner1){ 
       System.out.print(res); 
      } 

      System.out.println("Table created Successfully..."); 

    } 
} 

Après la sortie est

Trying to connect... 
HBase is running! 
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
2017-03-22 18:24:32.271 java[29447:3527085] Unable to load realm mapping info from SCDynamicStore 
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: java.lang.NullPointerException 
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:208) 
    at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320) 
    at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295) 
    at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160) 
    at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:155) 
    at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:821) 
    at hbase.Sample.main(Sample.java:29) 
Caused by: java.lang.RuntimeException: java.lang.NullPointerException 
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:208) 
    at org.apache.hadoop.hbase.client.ClientSmallReversedScanner.loadCache(ClientSmallReversedScanner.java:211) 
    at org.apache.hadoop.hbase.client.ClientSmallReversedScanner.next(ClientSmallReversedScanner.java:185) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1249) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1155) 
    at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300) 
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:151) 
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:59) 
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200) 
    ... 6 more 
Caused by: java.lang.NullPointerException 
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.getMetaReplicaNodes(ZooKeeperWatcher.java:395) 
    at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:553) 
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:61) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1185) 
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1152) 
    at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300) 
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:151) 
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:59) 
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200) 
    ... 14 more 

Je l'ai déjà créé une table à l'aide de la HBase shell HBase. Je cours HDP 2.5 et mon code d'eclipse sur OS X EI Captian.
J'ai copié le fichier hbase-site.xml dans mon chemin local.

+0

Votre question semble similaire à celle décrite sur la question: http://stackoverflow.com/questions/7134723/hadoop-on-osx-unable-to-load-realm-info-from-scdynamicstore – cjackson

Répondre

0

Selon votre code, je peux comprendre que vous créez la configuration Hbase sans ajouter d'informations de configuration dans votre classe. Donc je suppose que vous auriez ajouté le fichier hbase-site.xml dans le classpath. Si ce n'est pas le cas, vous devez l'ajouter ou définir les détails du zookeeper znode et du quorum dans votre classe comme ci-dessous.

 Configuration conf = HBaseConfiguration.create(); 
     conf.set("zookeeper.znode.parent", <hbase znode>) 
     conf.set("hbase.zookeeper.quorum", <quorum ip>); 
     conf.set("hbase.zookeeper.property.clientPort", <port>); 

     Connection conn = ConnectionFactory.createConnection(conf);