0

我写了一个hbase java客户端,如下所示。Hbase ResultScanner抛出一个空指针异常

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..."); 

    } 
} 

以下是使用HBase的壳我已经创建了一个表中的输出

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 

在HBase的。我在OS X EI Captian上运行了HDP 2.5和我的代码。
我复制了我的本地路径中的hbase-site.xml。

+0

你的问题似乎类似于概述了一个问题:http://stackoverflow.com/questions/7134723/hadoop-on-osx-unable-to-load-realm-info-from-scdynamicstore – cjackson

回答

0

按照您的代码,我可以理解,你无需在类中添加任何配置信息创建HbaseConfiguration。所以我假设你会在类路径中添加hbase-site.xml。如果没有,您必须添加它或在您的班级中设置zookeeper znode和法定人数详细信息,如下所示。

 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);