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

将大型Hbase表加载到SPARK RDD需要很长时间,hbase,apache-spark,apache-spark-sql,Hbase,Apache Spark,Apache Spark Sql,我正在尝试将一个大型Hbase表加载到SPARK RDD中,以便在实体上运行SparkSQL查询。对于一个大约有600万行的实体,将其加载到RDD大约需要35秒。这是预期的吗?有没有办法缩短装载过程?我得到了一些加快流程的建议,例如。, setCaching(cacheSize)并仅添加要扫描的必要属性/列。 我只是想知道是否还有其他方法可以提高速度 以下是代码片段: SparkConf sparkConf = new SparkConf().setMaster("spark://url").s

我正在尝试将一个大型Hbase表加载到SPARK RDD中,以便在实体上运行SparkSQL查询。对于一个大约有600万行的实体,将其加载到RDD大约需要35秒。这是预期的吗?有没有办法缩短装载过程?我得到了一些加快流程的建议,例如。, 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());    
SparkConf SparkConf=new SparkConf().setMaster(“spark://urlsetAppName(“SparkSQLTest”);
JavaSparkContext jsc=新的JavaSparkContext(sparkConf);
配置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.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,convertscanttoString(SCAN));
JavaPairRDD hBaseRDD
=jsc.newAPIHadoopRDD(hbase_conf,
TableInputFormat.class,ImmutableBytesWritable.class,
结果(班级);
info(“计数为”+hBaseRDD.cache().count());

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