Я написал простую программу для чтения данных из HBase, программа работает в Cloudera с поддержкой HDFS.
Но получается исключение при тестировании данных EMR с S3.
// Spark conf
SparkConf sparkConf = new SparkConf().setMaster("local[4]").setAppName("My App");
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
// Hbase conf
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","localhost");
conf.set("hbase.zookeeper.property.client.port","2181");
// Submit scan into hbase conf
// conf.set(TableInputFormat.SCAN, TableMapReduceUtil.convertScanToString(scan));
conf.set(TableInputFormat.INPUT_TABLE, "mytable");
conf.set(TableInputFormat.SCAN_ROW_START, "startrow");
conf.set(TableInputFormat.SCAN_ROW_STOP, "endrow");
// Get RDD
JavaPairRDD<ImmutableBytesWritable, Result> source = jsc
.newAPIHadoopRDD(conf, TableInputFormat.class,
ImmutableBytesWritable.class, Result.class);
// Process RDD
System.out.println("&&&&&&&&&&&&&&&&&&&&&&& " + source.count());
18/05/04 00:22:02 ИНФОРМАЦИЯ MetricRegistries: загруженный класс MetricRegistries
org.apache.hadoop.hbase.metrics.impl.MetricRegistriesImpl
18/05/04 00:22:02 ОШИБКА TableInputFormat: java.io.IOException: java.lang.reflect.InvocationTargetException
в org.apache.hadoop.hbase.client.ConnectionFactory.createConnection (ConnectionFactory.java:240)
Вызывается: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод)
at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
в java.lang.reflect.Constructor.newInstance (Constructor.java:423)
в org.apache.hadoop.hbase.client.ConnectionFactory.createConnection (ConnectionFactory.java:238)
Вызвано: java.lang.IllegalAccessError: попытался получить доступ к классу org.apache.hadoop.metrics2.lib.MetricsInfoImpl из класса
org.apache.hadoop.metrics2.lib.DynamicMetricsRegistry
в org.apache.hadoop.metrics2.lib.DynamicMetricsRegistry.newGauge (DynamicMetricsRegistry.java:139)
в org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl. (MetricsZooKeeperSourceImpl.java:59)
в org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSourceImpl. (MetricsZooKeeperSourceImpl.java:51)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод)
at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
в java.lang.reflect.Constructor.newInstance (Constructor.java:423)
в java.lang.Class.newInstance (Class.java:442)
в java.util.ServiceLoader $ LazyIterator.nextService (ServiceLoader.java:380)
... еще 42
Exception in thread "main" java.io.IOException: Cannot create a record reader because of a previous error. Please look at the previous
записывает строки из полного журнала задачи для более подробной информации.
в org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.getSplits (TableInputFormatBase.java:270).
в org.apache.hadoop.hbase.mapreduce.TableInputFormat.getSplits (TableInputFormat.java:256)
в org.apache.spark.rdd.NewHadoopRDD.getPartitions (NewHadoopRDD.scala: 125)
в org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply (RDD.scala: 252)
в org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply (RDD.scala: 250)
в scala.Option.getOrElse (Option.scala: 121)
в org.apache.spark.rdd.RDD.partitions (RDD.scala: 250)
в org.apache.spark.SparkContext.runJob (SparkContext.scala: 2094)
в org.apache.spark.rdd.RDD.count (RDD.scala: 1158)
в org.apache.spark.api.java.JavaRDDLike $ class.count (JavaRDDLike.scala: 455)
в org.apache.spark.api.java.AbstractJavaRDDLike.count (JavaRDDLike.scala: 45)
в HbaseScan.main (HbaseScan.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:498)
в org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain (SparkSubmit.scala: 775)
в org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1 (SparkSubmit.scala: 180)
в org.apache.spark.deploy.SparkSubmit $ .submit (SparkSubmit.scala: 205)
в org.apache.spark.deploy.SparkSubmit $ .main (SparkSubmit.scala: 119)
в org.apache.spark.deploy.SparkSubmit.main (SparkSubmit.scala)Причина: java.lang.IllegalStateException: экземпляр формата ввода не был должным образом инициализирован. Убедитесь, что вы звоните
initializeTable либо в вашем конструкторе, либо в методе initialize
в org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.getTable (TableInputFormatBase.java:652)
в org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.getSplits (TableInputFormatBase.java:265)
... еще 20 со ВСЕМИ APACHE HBASE LIBS: e.hadoop.hbase.metrics.impl.MetricRegistriesImpl 18/05/04 04:05:54
ОШИБКА TableInputFormat: java.io.IOException:
java.lang.reflect.InvocationTargetException at
org.apache.hadoop.hbase.client.ConnectionFactory.createConnection (ConnectionFactory.java:240)
в
org.apache.hadoop.hbase.client.ConnectionFactory.createConnection (ConnectionFactory.java:218)
в
org.apache.hadoop.hbase.client.ConnectionFactory.createConnection (ConnectionFactory.java:119)
в
org.apache.hadoop.hbase.mapreduce.TableInputFormat.initialize (TableInputFormat.java:202)
в
org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.getSplits (TableInputFormatBase.java:259)
в
org.apache.hadoop.hbase.mapreduce.TableInputFormat.getSplits (TableInputFormat.java:256)
в
org.apache.spark.rdd.NewHadoopRDD.getPartitions (NewHadoopRDD.scala: 125)
в
org.apache.spark.rdd.RDD $$ anonfun $ Перегородки $ 2.Apply (RDD.scala: 252)
в
org.apache.spark.rdd.RDD $$ anonfun $ Перегородки $ 2.Apply (RDD.scala: 250)
в scala.Option.getOrElse (Option.scala: 121) в
org.apache.spark.rdd.RDD.partitions (RDD.scala: 250) в
org.apache.spark.SparkContext.runJob (SparkContext.scala: 2094) в
org.apache.spark.rdd.RDD.count (RDD.scala: 1158) в
org.apache.spark.api.java.JavaRDDLike $ class.count (JavaRDDLike.scala: 455)
в
org.apache.spark.api.java.AbstractJavaRDDLike.count (JavaRDDLike.scala: 45)
в HbaseScan.main (HbaseScan.java:60) в
sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в
sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
в
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:498) в
org.apache.spark.deploy.SparkSubmit $ .org $ апаша $ искровым $ $ SparkSubmit развернуть $$ runMain (SparkSubmit.scala: 775)
в
org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1 (SparkSubmit.scala: 180)
в org.apache.spark.deploy.SparkSubmit $ .submit (SparkSubmit.scala: 205)
в org.apache.spark.deploy.SparkSubmit $ .main (SparkSubmit.scala: 119)
atg.apache.spark.deploy.SparkSubmit.main (SparkSubmit.scala) Вызван
автор: java.lang.reflect.InvocationTargetException at
sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод)
в
sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
в
sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
в java.lang.reflect.Constructor.newInstance (Constructor.java:423)
в
org.apache.hadoop.hbase.client.ConnectionFactory.createConnection (ConnectionFactory.java:238)
... еще 24 Причина: java.lang.RuntimeException: не удалось создать
интерфейс org.apache.hadoop.hbase.zookeeper.MetricsZooKeeperSource Is
баночка совместимости hadoop на пути к классам? в
org.apache.hadoop.hbase.CompatibilitySingletonFactory.getInstance (CompatibilitySingletonFactory.java:75)
в
org.apache.hadoop.hbase.zookeeper.MetricsZooKeeper. (MetricsZooKeeper.java:38)
в
org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper. (RecoverableZooKeeper.java:130)
в org.apache.hadoop.hbase.zookeeper.ZKUtil.connect (ZKUtil.java:143)
в
org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher. (ZooKeeperWatcher.java:181)
в
org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher. (ZooKeeperWatcher.java:155)
в
org.apache.hadoop.hbase.client.ZooKeeperKeepAliveConnection. (ZooKeeperKeepAliveConnection.java:43)
вorg.apache.hadoop.hbase.client.ConnectionManager $ HConnectionImplementation.getKeepAliveZooKeeperWatcher (ConnectionManager.java:1737)