Spark SQL性能

 mobiledu2502861377 发布于 2022-12-04 00:49

我的代码算法如下
Step1.获取一个hbase实体数据到hBaseRDD

      JavaPairRDD hBaseRDD = 
                 jsc.newAPIHadoopRDD(hbase_conf,  TableInputFormat.class,
                 ImmutableBytesWritable.class, Result.class); 

第2步.将hBaseRDD转换为rowPairRDD

     // in the rowPairRDD the key is hbase's row key, The Row is the hbase's Row data 
     JavaPairRDD rowPairRDD = hBaseRDD 
                            .mapToPair(***); 
    dataRDD.repartition(500);
        dataRDD.cache();

Step3.将rowPairRDD转换为schemaRDD

            JavaSchemaRDD schemaRDD =   sqlContext.applySchema(rowPairRDD.values(), schema); 
            schemaRDD.registerTempTable("testentity"); 
           sqlContext.sqlContext().cacheTable("testentity");

Step4.使用spark sql做第一个简单的sql查询.

   JavaSQLContext  sqlContext = new org.apache.spark.sql.api.java.JavaSQLContext(jsc);
    JavaSchemaRDD retRDD=sqlContext.sql("SELECT column1, column2 FROM testentity WHERE 
             column3 = 'value1' ") 
     List rows = retRDD.collect(); 

Step5.使用spark sql做第二个简单的sql查询.

JavaSchemaRDD retRDD=sqlContext.sql("SELECT column1, column2 FROM testentity 
                                     WHERE column3 = 'value2' ") 
List rows = retRDD.collect(); 

第六步.用spark sql做第三个简单的sql查询.

JavaSchemaRDD retRDD=sqlContext.sql("SELECT column1, column2 FROM testentity WHERE column3 = 'value3' "); 
List rows = retRDD.collect(); 

测试结果如下:

测试案例1:

当我插入300,000条记录时,hbase实体,然后运行代码.

第一个查询需要60407毫秒

第二个查询需要838毫秒

3td查询需要792毫秒

如果我使用hbase Api进行类似的查询,它只需要2000毫秒.显然,最后2个spark sql查询比hbase api查询快得多.
我相信第一个spark sql查询花了很多时间从hbase加载数据.
因此,第一个查询比最后两个查询慢得多.我认为结果是预期的

测试案例2:

当我插入400,000条记录时.hbase实体,然后运行代码.

第一个查询需要87213毫秒

第二个查询需要83238毫秒

3td查询需要82092毫秒

如果我使用hbase Api进行类似的查询,它只需要3500毫秒.显然,3个spark sql查询比hbase api查询要慢得多.
而最后2个spark sql querys也很慢而且性能类似于第一个查询,为什么呢?我该如何调整性能?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有