本人对大数据方面也是刚刚研究,由于工作需要在实时查询与统计的性能方面要深入学习。现测试性能如下:
 
环境:VirtualBox  host-only
ubuntu版本: Linux master 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
 
XXX.XXX.XXX.101  master
XXX.XXX.XXX.102  Slave1
XXX.XXX.XXX.103  Slave2
XXX.XXX.XXX.104  Client1
XXX.XXX.XXX.1    HOST   数据库安装于宿主机器内
 
在master中start-all 成功启动后。slave1与Slave2 Work启动成功。
在Client机器中启动 spark-shell --master  spark://master:7077  --jars ../lib/ojdbc6.jar  启动成功 执行下面的指令
 
val url = "jdbc:oracle:thin:@XXX.XXX.XXX.1:1521:orcl" val tableName = "mytables" val prop = new java.util.Properties prop.setProperty("user","test") prop.setProperty("password","test")
prop.setProperty("driver","oracle.jdbc.driver.OracleDriver")
val predicates = Array( "2013-01-01" -> "2014-01-01", "2014-01-01" -> "2015-01-01", "2015-01-01" -> "2016-01-01",
"2016-01-01" -> "2017-01-01" ).map { case (start, end) => s" indbtime>= to_date('$start','yyyy-mm-dd') " + s" AND indbtime<= to_date( '$end','yyyy-mm-dd')" }
val jdbcDF = sqlContext.read.jdbc(url,tableName,predicates,prop)
 
 
scala> jdbcDF.count()
16/11/29 17:19:49 INFO DAGScheduler: Job 0 finished: count at <console>:30, took 41.144126 s
res4: Long = 1441039
 
 
结论:
1441039的数据耗时要41秒,而在数据库里直接用select count(*) from tables ,不到一秒就返回结果。
我知道集群的spark应该会比单机的oracle功能更强大,请高手指点,哪儿出的问题?
 
对数据库表里上亿条的数据各种组合条件与统计字段交叉,要求10秒内返回结果,请问大牛们,如何实现??
大数据初学,问题有些低级,望专业人士不要见笑。
 

Spark难道比oracle性能还差?百万级数据测试性能的更多相关文章

  1. ECshop网店系统百万级商品量性能优化-加快首页访问速度

    如果ECshop的商品数达到几万,十几万的时候,如果首页没有缓存,第一次访问的时候,你会发现其慢无比,原因就是清空了Cache后或者没有Cache的情况下,ECshop会Bulid一些Cache数据, ...

  2. ECshop网店系统百万级商品量性能优化-简单的一些Cache内存配置

    ECshop网店系统对于产品的数据.模板.Query都可以缓存,也就是把一些商品详情页.分类页.Search页的数据经过一次访问后,用文件的形式保存下来,下次有人访问相同的页面时,不用再查数据库,直接 ...

  3. 百万级高并发mongodb集群性能数十倍提升优化实践

    背景 线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时延抖动严重影响业务可用性.该集群采 ...

  4. 如何找出你性能最差的SQL Server查询

    我经常会被反复问到这样的问题:”我有一个性能很差的SQL Server.我如何找出最差性能的查询?“.因此在今天的文章里会给你一些让你很容易找到问题答案的信息向导. 问SQL Server! SQL ...

  5. sql server 查询性能最差的sql语句

    SELECT TOP 10 TEXT AS 'SQL Statement' ,last_execution_time AS 'Last Execution Time' ,(total_logical_ ...

  6. [Spark性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析

    本課主題 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质 ...

  7. [NewLife.XCode]实体列表缓存(最土的方法实现百万级性能)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  8. SQL语句计算距离今天生日还差几天

    转载于:http://www.w3dev.cn/article/20110125/sql-compute-birthdate-now-days.aspx SQL语句计算距离生日还差几天原理很简单,将要 ...

  9. getBean(class )并发下性能较差,有锁.

    spring 版本3.1.2 1. spring 并没有缓存 class -> beanDifinition 或者 sington 实例的缓存. 2. 只能先获取所有的beanDifitions ...

随机推荐

  1. @Resource、@Autowired、@Qualifier的注解注入及区别

    在Java代码中可以使用 @Resource  或者 @Autowired 注解方式来进行注入. 虽然 @Resource 和 @Autowried 都可以完成依赖注入,但是他们是有区别的. 一: @ ...

  2. shared memory realm does not exist

    有天启动ORACLE,碰到如下问题 提示ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist 解决 ...

  3. iOS开发 代码 或 <Home+Power>截屏

      1. 截屏的两种简单方法, 注意这两种截图方法,都必须在视图完全加载完成后才能截图,即在 viewDidAppear 方法之后截屏,否则无法得到想要的截屏效果 (1) 利用绘图方法 renderI ...

  4. web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入

    web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...

  5. c++常见面试题

    1.class和struct的区别? 在c++中,在class中声明的成员默认为private成员,而在struct中声明的成员默认为public成员,class的默认继承方式为private,str ...

  6. 使用date类和format类对系统当前时间进行格式化显示

    一:Date------------String 代码1:(代码二对显示出来的时间格式进行优化) package DateDemo; import java.text.SimpleDateFormat ...

  7. Android根据文件路径加载指定文件

    Android根据指定的文件路径加载指定文件格式(图片格式 png, gif,jpg jpeg)的文件相关信息的列表. 如图: 代码: public class Util { /**** * 计算文件 ...

  8. 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(二)kmeans

    (上接第二章) 4.3.1 KMeans 算法流程 算法的过程如下: (1)从N个数据文档随机选取K个文档作为质心 (2)对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心的类 (3)重新计 ...

  9. (转)java中静态代码块的用法 static用法详解

    一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来 ...

  10. RandomAccessFile拆分合并文件

    import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java. ...