将大型Hbase表加载到SPARK RDD需要很长时间

时间:2014-12-04 22:33:07

标签: hbase apache-spark apache-spark-sql

我正在尝试将大型Hbase表加载到SPARK RDD中以在该实体上运行SparkSQL查询。对于具有大约600万行的实体,将其加载到RDD将花费大约35秒。这是预期的吗?有没有办法缩短装载过程?我已经从http://hbase.apache.org/book/perf.reading.html获得了一些提示,以加快这一过程,例如, scan.setCaching(cacheSize)并且只添加必要的属性/列进行扫描。 我只是想知道是否有其他方法可以提高速度?

以下是代码段:

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());    

1 个答案:

答案 0 :(得分:0)

根据您的群集大小,行的大小(列和列系列以及区域的分割方式),它可能会有所不同 - 但这听起来并不合理。考虑每秒有多少行:)