2014-12-04 84 views
0

我试图将一个大的Hbase表加载到SPARK RDD中以在实体上运行SparkSQL查询。对于有大约600万行的实体,将需要大约35秒才能将其加载到RDD。是否预计?有什么方法可以缩短加载过程吗?我一直在从http://hbase.apache.org/book/perf.reading.html获得一些提示,以加快此过程,例如, scan.setCaching(cacheSize),并且只添加必要的属性/列进行扫描。 我只是想知道是否有其他方法来提高速度?将大型Hbase表加载到SPARK RDD需要很长时间

这里是代码片段:

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

回答

0

根据您的簇大小和行的大小(列和列的家庭,以及您的区域分割),它可能会有所不同 - 但没有按听起来不合理。考虑每秒有多少行:) :)