Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误TableInputFormat:org.Apache.Hadoop.hbase.TableName.valueOf上的Java.lang.NullPointerException_Hadoop_Apache Spark_Hbase_Apache Zookeeper_Hortonworks Data Platform - Fatal编程技术网

错误TableInputFormat:org.Apache.Hadoop.hbase.TableName.valueOf上的Java.lang.NullPointerException

错误TableInputFormat:org.Apache.Hadoop.hbase.TableName.valueOf上的Java.lang.NullPointerException,hadoop,apache-spark,hbase,apache-zookeeper,hortonworks-data-platform,Hadoop,Apache Spark,Hbase,Apache Zookeeper,Hortonworks Data Platform,我正在尝试使用Spark从HBase读取数据。我使用的版本是 Spark 1.3.1和Hbase 1.1.1。我得到以下错误 ERROR TableInputFormat: java.lang.NullPointerException at org.apache.hadoop.hbase.TableName.valueOf(TableName.java:417)

我正在尝试使用Spark从HBase读取数据。我使用的版本是 Spark 1.3.1和Hbase 1.1.1。我得到以下错误

ERROR TableInputFormat: java.lang.NullPointerException                                                              
    at org.apache.hadoop.hbase.TableName.valueOf(TableName.java:417)                                                              
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:159)                                                              
    at org.apache.hadoop.hbase.mapreduce.TableInputFormat.setConf(TableInputFormat.java:101)                                      
    at org.apache.spark.rdd.NewHadoopRDD.getPartitions(NewHadoopRDD.scala:91)                                                     
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219)                                                        
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217)                                                        
    at scala.Option.getOrElse(Option.scala:120)                                                                                   
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:217)                                                                         
    at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:32)                                             
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:219)                                                        
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:217)                                                        
    at scala.Option.getOrElse(Option.scala:120)                                                                                   
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:217)                                                                         
    at org.apache.spark.ShuffleDependency.<init>(Dependency.scala:82)                                                             
    at org.apache.spark.rdd.ShuffledRDD.getDependencies(ShuffledRDD.scala:80)                                                     
    at org.apache.spark.rdd.RDD$$anonfun$dependencies$2.apply(RDD.scala:206)                                                      
    at org.apache.spark.rdd.RDD$$anonfun$dependencies$2.apply(RDD.scala:204)                                                      
    at scala.Option.getOrElse(Option.scala:120)                                                                                   
    at org.apache.spark.rdd.RDD.dependencies(RDD.scala:204)                                                                       
    at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal(DAGScheduler.scal
错误TableInputFormat:java.lang.NullPointerException
位于org.apache.hadoop.hbase.TableName.valueOf(TableName.java:417)
位于org.apache.hadoop.hbase.client.HTable.(HTable.java:159)
位于org.apache.hadoop.hbase.mapreduce.TableInputFormat.setConf(TableInputFormat.java:101)
位于org.apache.spark.rdd.NewHadoopRDD.getPartitions(NewHadoopRDD.scala:91)
位于org.apache.spark.rdd.rdd$$anonfun$partitions$2.apply(rdd.scala:219)
位于org.apache.spark.rdd.rdd$$anonfun$partitions$2.apply(rdd.scala:217)
在scala.Option.getOrElse(Option.scala:120)
位于org.apache.spark.rdd.rdd.partitions(rdd.scala:217)
位于org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:32)
位于org.apache.spark.rdd.rdd$$anonfun$partitions$2.apply(rdd.scala:219)
位于org.apache.spark.rdd.rdd$$anonfun$partitions$2.apply(rdd.scala:217)
在scala.Option.getOrElse(Option.scala:120)
位于org.apache.spark.rdd.rdd.partitions(rdd.scala:217)
位于org.apache.spark.shuffledependence(Dependency.scala:82)
位于org.apache.spark.rdd.shuffleddd.getDependencies(shuffleddd.scala:80)
位于org.apache.spark.rdd.rdd$$anonfun$dependencies$2.apply(rdd.scala:206)
位于org.apache.spark.rdd.rdd$$anonfun$dependencies$2.apply(rdd.scala:204)
在scala.Option.getOrElse(Option.scala:120)
位于org.apache.spark.rdd.rdd.dependencies(rdd.scala:204)
在org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$getPreferredLocsInternal(DAGScheduler.scal
代码如下

 public static void main( String[] args )
{
    String TABLE_NAME = "Hello";
    HTable table=null;
    SparkConf sparkConf = new SparkConf();
    sparkConf.setAppName("Data Reader").setMaster("local[1]");
    sparkConf.set("spark.executor.extraClassPath", "$(hbase classpath)");

    JavaSparkContext sparkContext = new JavaSparkContext(sparkConf);

    Configuration hbConf = HBaseConfiguration.create();
    hbConf.set("zookeeper.znode.parent", "/hbase-unsecure");
    try {
         table = new HTable(hbConf, Bytes.toBytes(TABLE_NAME));

    } catch (IOException e) {

        e.printStackTrace();
    }

    JavaPairRDD<ImmutableBytesWritable, Result> hBaseRDD = sparkContext
            .newAPIHadoopRDD(
                    hbConf,
                    TableInputFormat.class,
                    org.apache.hadoop.hbase.io.ImmutableBytesWritable.class,
                    org.apache.hadoop.hbase.client.Result.class);
    hBaseRDD.coalesce(1, true);
    System.out.println("Count "+hBaseRDD.count());
    //.saveAsTextFile("hBaseRDD");
    try {
        table.close();
        sparkContext.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
publicstaticvoidmain(字符串[]args)
{
字符串表_NAME=“Hello”;
HTable table=null;
SparkConf SparkConf=新SparkConf();
sparkConf.setAppName(“数据读取器”).setMaster(“本地[1]”);
sparkConf.set(“spark.executor.extraClassPath”,“$(hbase类路径)”);
JavaSparkContext sparkContext=新的JavaSparkContext(sparkConf);
Configuration hbConf=HBaseConfiguration.create();
hbConf.set(“zookeeper.znode.parent”,“/hbase unsecure”);
试一试{
table=新的HTable(hbConf,Bytes.toBytes(table_NAME));
}捕获(IOE异常){
e、 printStackTrace();
}
javapairdd hBaseRDD=sparkContext
.newAPIHadoopRDD(
hbConf,
TableInputFormat.class,
org.apache.hadoop.hbase.io.ImmutableBytesWritable.class,
org.apache.hadoop.hbase.client.Result.class);
hBaseRDD.coalesce(1,真);
System.out.println(“Count”+hBaseRDD.Count());
//.saveAsTextFile(“hBaseRDD”);
试一试{
table.close();
sparkContext.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
我无法解决此问题。我正在为此使用Hortonworks沙盒。

您已写入:

try {
     table = new HTable(hbConf, Bytes.toBytes(TABLE_NAME));

} catch (IOException e) {

     e.printStackTrace();
}
如果您使用的是1.1.1 api:

在中,我只能看到两个构造函数:

受保护的HTable(群集连接连接,BufferedMutatorParams参数) 用于内部测试

受保护的HTable(TableName TableName、ClusterConnection连接、, TableConfiguration tableConfig,RpcRetryingCallerFactory rpcCallerFactory、RpcControllerFactory、RpcControllerFactory、, Executor服务池)创建一个对象以访问HBase表

第一个构造函数的参数构造函数是:
BufferedMutatorParams(TableName TableName)

TableName没有构造函数

因此,您必须按如下方式初始化HTable:

table = new HTable(hbConf, new bufferedMutatorParams(TableName.valueOf(TABLE_NAME))
如果您正在使用:

HTBale的施工人员包括:

HTable(byte[]tableName,HConnection connection)创建一个要 访问HBase表.HTable(字节[]表名,HConnection连接, ExecutorService池)创建一个对象以访问HBase表

HTable(org.apache.hadoop.conf.conf,字节[]tableName) 创建用于访问HBase表的对象

HTable(org.apache.hadoop.conf.conf,byte[]tableName, Executor服务池)创建一个对象以访问HBase表

HTable(org.apache.hadoop.conf.conf.conf,String tableName) 创建用于访问HBase表的对象

因此,最后看一下,您只需要传递字符串名称,而不需要传递字节[]

table = new HTable(hbConf, TABLE_NAME);

应该没问题。

发布您的代码please@SimonePessotto请检查您正在使用的java API的已编辑postwich版本?