Невозможно протестировать Hbase, поддерживаемый S3 от Spark - PullRequest
0 голосов
/ 04 мая 2018

Я написал простую программу для чтения данных из 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)

...