Я использую Spark для записи данных в Hbase, я могу читать данные очень хорошо, но запись не удалась со следующим исключением.Я нашел похожую проблему, которая была решена путем добавления * site.xml и hbase JAR.Но это не работает для меня.Я пытаюсь прочитать данные из таблицы и записать данные в другую таблицу.я могу читать данные просто отлично, но получаю исключение во время записи.
JavaPairRDD<ImmutableBytesWritable, Put> tablePuts = hBaseRDD.mapToPair(new PairFunction<Tuple2<ImmutableBytesWritable, Result>, ImmutableBytesWritable, Put>() {
@Override
public Tuple2<ImmutableBytesWritable, Put> call(Tuple2<ImmutableBytesWritable, Result> results) throws Exception {
byte[] accountId = results._2().getValue(Bytes.toBytes(COLFAMILY), Bytes.toBytes("accountId"));
String rowKey = new String(results._2().getRow();
String accountId2 = (Bytes.toString(accountId));
String prefix = getMd5Hash(rowKey);
String newrowKey = prefix + rowKey;
Put put = new Put( Bytes.toBytes(newrowKey) );
put.addColumn(Bytes.toBytes("def"), Bytes.toBytes("accountId"), accountId);
}
});
Job newAPIJobConfiguration = Job.getInstance(conf);
newAPIJobConfiguration.getConfiguration().set(TableOutputFormat.OUTPUT_TABLE, OUT_TABLE_NAME);
newAPIJobConfiguration.setOutputFormatClass(org.apache.hadoop.hbase.mapreduce.TableOutputFormat.class);
newAPIJobConfiguration.setOutputKeyClass(org.apache.hadoop.hbase.io.ImmutableBytesWritable.class);
newAPIJobConfiguration.setOutputValueClass(org.apache.hadoop.io.Writable.class);
tablePuts.saveAsNewAPIHadoopDataset(newAPIJobConfiguration.getConfiguration());
Исключение в потоке "main" java.lang.NullPointerException в org.apache.hadoop.hbase.security.UserProvider.instantiate (UserProvider.java: 123) в org.apache.hadoop.hbase.client.ConnectionFactory.createConnection (ConnectionFactory.java:214) в org.apache.hadoop.hbase.client.ConnectionFactory.createConnection (ConnectionFactory.java:119) в org.ap.hadoop.hbase..write (SparkHadoopWriter.scala: 71) в org.apache.spark.rdd.PairRDDFunctions $$ anonfun $ saveAsNewAPIHadoopDataset $ 1.apply $ mcV $ sp (PairRDDFunctions.scala: 1083) в org.apache.spairDFD.anonfun $ saveAsNewAPIHadoopDataset $ 1.apply (PairRDDFunctions.scala: 1081) в org.apache.spark.rdd.PairRDDFunctions $$ anonfun $ saveAsNewAPIHadoopDataset $ 1.apply (PairRDDFunctions.scala: 1081) в org.apache.spark.rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 151) в org.apache.spark.rdd.RDDOperationScope $ .withScope.cope $ .withScope.cope (.) в org.apache.spark.rdd.RDD.withScope (RDD.scala: 363) в org.apache.spark.rdd.PairRDDFunctions.saveAsNewAPIHadoopDataset (PairRDDFunctions.scala: 1081) в org.apache.spark.api.JavaPairRDD.saveAsNewAPIHadoopDataset (JavaPairRDD.scala: 831) по адресу com.voicebase.etl.s3tohbase.HbaseScan2.main (HbaseScan2.java:148) по адресу sun.reflect.NativeMethodAccessorImpl.invoto.ImpImon.Noke0NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.apain.pache.(SparkApplication.scala: 52) в org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain (SparkSubmit.scala: 879) в org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1 (SparkSubmit.scala: 197) в org.apache.spark.deploy.SparkSubmit $ .submit (SparkSubmit.scala: 227) в org.apache.spark.deploy.SparkS$ .main (SparkSubmit.scala: 136) в org.apache.spark.deploy.SparkSubmit.main (SparkSubmit.scala)