zoukankan      html  css  js  c++  java
  • Spark难道比oracle性能还差?百万级数据测试性能

    本人对大数据方面也是刚刚研究,由于工作需要在实时查询与统计的性能方面要深入学习。现测试性能如下:
     
    环境: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秒内返回结果,请问大牛们,如何实现??
    大数据初学,问题有些低级,望专业人士不要见笑。
     
  • 相关阅读:
    【Mysql】日期时间格式化
    【CSS】css网页背景图片设置
    【C#】【Thread】SynchronizationContext线程间同步
    love2d--glsl03噪声
    love2d--glsl02变量和语句
    love2d--glsl01简单的渲染
    love2d 0.9发布
    工作感受
    本系列love2d示例代码错误集中整理
    一些lua代码
  • 原文地址:https://www.cnblogs.com/cplusplus/p/6114523.html
Copyright © 2011-2022 走看看