0

大きな Hbase テーブルを SPARK RDD にロードして、エンティティで SparkSQL クエリを実行しようとしています。約 600 万行のエンティティの場合、RDD に読み込むのに約 35 秒かかります。それは期待されていますか?ロードプロセスを短縮する方法はありますか? http://hbase.apache.org/book/perf.reading.htmlからプロセスを高速化するためのヒントをいくつか得ています。速度を改善する他の方法があるかどうか疑問に思っていますか?

コード スニペットは次のとおりです。

SparkConf sparkConf = new SparkConf().setMaster("spark://url").setAppName("SparkSQLTest");
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
Configuration hbase_conf = HBaseConfiguration.create();
hbase_conf.set("hbase.zookeeper.quorum","url");
hbase_conf.set("hbase.regionserver.port", "60020");
hbase_conf.set("hbase.master", "url");
hbase_conf.set(TableInputFormat.INPUT_TABLE, entityName);
Scan scan = new Scan();
scan.addColumn(Bytes.toBytes("MetaInfo"), Bytes.toBytes("col1"));
scan.addColumn(Bytes.toBytes("MetaInfo"), Bytes.toBytes("col2"));
scan.addColumn(Bytes.toBytes("MetaInfo"), Bytes.toBytes("col3"));
scan.setCaching(this.cacheSize);
hbase_conf.set(TableInputFormat.SCAN, convertScanToString(scan));
JavaPairRDD<ImmutableBytesWritable, Result> hBaseRDD 
= jsc.newAPIHadoopRDD(hbase_conf,
            TableInputFormat.class, ImmutableBytesWritable.class,
            Result.class);
logger.info("count is " + hBaseRDD.cache().count());    
4

1 に答える 1

0

クラスターのサイズと行のサイズ (列と列ファミリー、および領域の分割方法) によって異なる場合がありますが、それは不合理ではありません。1秒あたりの行数を考えてみてください:)

于 2015-10-07T21:00:48.047 に答える