0

sparkのMapPartitionFunctionでhbase接続を作成しようとしています。sparkでhadoop設定を使用してHbaseに接続

Caused by: java.io.NotSerializableException: org.apache.hadoop.conf.Configuration 

私はデータセットを作成し、HBaseのへの接続を作成するために、hbaseConfを渡すsparkSessionを使用しています次のコード

SparkConf conf = new SparkConf() 
      .setAppName("EnterPrise Risk Score") 
      .setMaster("local"); 
    conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); 
    conf.set("spark.kryo.registrationRequired", "true"); 
    conf.registerKryoClasses(new Class<?>[] { 
          Class.forName("org.apache.hadoop.conf.Configuration"), 
          Class.forName("org.apache.hadoop.hbase.client.Table"), 
          Class.forName("com.databricks.spark.avro.DefaultSource$SerializableConfiguration")}); 
    SparkSession sparkSession = SparkSession.builder().config(conf) 
      .getOrCreate(); 
Configuration hbaseConf= HBaseConfiguration 
      .create(hadoopConf); 

を試してみました。

hbaseに接続する方法はありますか?

+0

:あなたはこのように右のそれの内部の構成を作成しないのはなぜ

Configuration hbaseConfiguration = HBaseConfiguration.create(); sc.hadoopFile(inDirTrails, AvroInputFormat.class, AvroWrapper.class, NullWritable.class)).mapPartitions(i -> { Connection connection = ConnectionFactory.createConnection(hbaseConfiguration) //more valid code }); 

を'org.apache.hadoop.conf.Configuration'クラスはシリアライズ可能ではなく、' KryoSerializer 'に登録しようとしています。 –

+0

質問を詳しく説明できますか? 'sparkonhbase'を試しましたか? –

+0

を参照してください[how-to-ask](http://stackoverflow.com/help/how-to-ask) –

答えて

1

あなたは、おそらく暗黙のうちにこのようなスパークアクションにHBaseの設定を渡す:それはそう

sc.hadoopFile(inDirTrails, AvroInputFormat.class, AvroWrapper.class, NullWritable.class)).mapPartitions(i -> { 
    Configuration hbaseConfiguration = HBaseConfiguration.create(); 
    hbaseConfiguration.set("hbase.zookeeper.quorum", HBASE_ZOOKEEPER_QUORUM); 
    Connection connection = ConnectionFactory.createConnection(hbaseConfiguration) 
    //more valid code 
}); 
+0

[mapPartitionsメソッド](http://stackoverflow.com/questions/21185092/apache-spark-map -vs-mappartitions)は接続やオブジェクトの作成に適しています –

関連する問題