本篇介绍 MySQL 表如何计算统计信息。表统计信息是数据库基于成本的优化器最重要的参考信息;统计信息不准确,优化器可能给出不够优化的执行计划或者是错误的执行计划。...对统计信息的计算分为非持久化统计信息(实时计算)与持久化统计信息。...非持久化统计信息 统计信息没有保存在磁盘上,而是频繁的实时计算统计信息; 每次对表的访问都会重新计算其统计信息; 假设针对一张大表的频繁查询,那么每次都要重新计算统计信息,很耗费资源。...持久化统计信息 把一张表在某一时刻的统计信息值保存在磁盘上; 避免每次查询时重新计算; 如果表更新不是很频繁,或者没有达到 MySQL 必须重新计算统计信息的临界值,可直接从磁盘上获取; 即使 MySQL...总结 简单总结下,本篇主要介绍了 MySQL 表和索引的统计信息计算,包括持久化统计信息与非持久化统计信息。
Oracle的CBO基于成本的优化器,计算过程中最重要的依据就是统计信息,而统计信息的采集存在着他的逻辑。...,才会写入表的统计信息, 因此当创建了一张新表,同时灌入了大量数据,在统计信息自动采集任务开始前就需要使用的情况下,建议人为采集统计信息,否则就可能导致因为统计信息不准,选错执行计划的场景。...,如果锁定某张表的统计信息,如下所示,执行了dbms_stats.lock_table_stats,表统计信息锁定可以从dba_tab_statistics的stattype_locked的字段进行判断...statistics,会提示错误,说对象统计信息已经锁定了, 从官方文档对lock_table_stats的介绍可以知道,当表的统计信息锁定,所有依赖于表的统计信息,包括表的统计信息、列的统计信息...、直方图,以及索引统计信息,都会被锁定, 因此,当锁定了表的统计信息时,如果显式使用compute statistics创建索引,就会提示错误,因为索引统计信息同样被锁定了,开锁前,不能采集。
MySQL优化器使用的是基于成本的模型,而衡量成本的主要指标就是一个查询需要扫描多少行。如果表没有统计信息,或者统计信息不准确,优化器就很有可能做出错误的决定。...MyISAM将索引统计信息存储在磁盘中, ANALYZE TABLE需要进行一次全索引扫描来计算索引基数。在整个过程中需要锁表。...InnoDB引擎通过抽样的方式来计算统计信息,首先随机地读取少量的索引页面,然后以此为样本计算索引的统计信息。...InnoDB会在表首次打开,或者执行 ANALYZE TABLE,抑或表的大小发生非常大的变化(大小变化超过十六分之一或者新插入了20亿行都会触发)的时候计算索引的统计信息。...InnoDB在打开某些INF0RMATION_SCHEMA表,或者使用 SHOW TABLE STATUS和SHOW INDEX,抑或在MySQL客户端开启自动补全功能的时候都会触发索引统计信息的更新。
♣ 题目部分 在Oracle中,如何查询表和索引的历史统计信息?...♣ 答案部分 从Oracle 10g开始,当收集表的统计信息的时候,旧的统计数据被保留,如果因为新的统计信息而出现性能问题,旧的统计信息就可以被恢复。...历史统计信息保存在以下几张表中: l WRI$_OPTSTAT_TAB_HISTORY 表的统计信息 l WRI$_OPTSTAT_IND_HISTORY 索引的统计信息 l WRI$_OPTSTAT_HISTHEAD_HISTORY...默认情况下统计信息将被保留31天,可以使用下面的命令修改: EXECUTE DBMS_STATS.ALTER_STATS_HISTORY_RETENTION (XX); --xx是保留的天数 注意:...这些统计信息在SYSAUX表空间中占有额外的存储开销,所以应该注意并防止统计信息将表空间填满。
1 问题描述 集群环境 sparksql读取Parquet 格式的hive表报错 hive的parquet表,hive和impala读取正常,使用spark-sql读取则报错 异常信息 com.fasterxml.jackson.core.JsonParseException...(JValueDeserializer.scala:32) at org.json4s.jackson.JValueDeserializer.deserialize(JValueDeserializer.scala...$$anonfun$getTable$1.apply(HiveExternalCatalog.scala:734) 2 问题原因 从报错来看,该hive表的tblproperites有问题,tblproperites...Hive和Impala在读取表的时候不会去解析tblproperites,因此正常。...3 问题解决 tblproperites不全的问题,应该是hive存储tblproperites的表,参数字段存在截断,因此找到metastore库中的TABLE_PARAMS表,检查PARAM_VALUE
此外,如果你尝试使用 HiveQL 中的 CREATE TABLE (并非 CREATE EXTERNAL TABLE)语句来创建表,这些表会被放在你默认的文件系统中的 /user/hive/warehouse...使用内嵌的 Hive 如果使用 Spark 内嵌的 Hive, 则什么都不用做, 直接使用即可. ...如果访问不到hdfs, 则需要把core-site.xml和hdfs-site.xml 拷贝到conf/目录下....// 一般用于测试学习 [bigdata@hadoop002 spark]$ bin/spark-sql spark-sql> select count(*) from emp; ?...2.3 使用hiveserver2 + beeline spark-sql 得到的结果不够友好, 所以可以使用hiveserver2 + beeline 1.
Spark sql on Hive非常方便,通过共享读取hive的元数据,我们可以直接使用spark sql访问hive的库和表,做更快的OLAP的分析。...spark 如果想直接能集成sql,最好自己编译下源码: 切换scala的版本为新版本 dev/change-scala-version.sh 2.11编译支持hive mvn -Pyarn -Phive...,像执行hive命令一样,进入交互式终端,进行即席查询,进入spark-sql交互式终端命令,并指定以yarn的模式运行: spark/bin/spark-sql --master yarn...本次使用的spark2.0.2,进入交互式终端之后,可以进行任意的查询分析,但本文的笔记例子,不是基于终端的spark sql分析,而是在Scala中使用spark sql on hive,在编程语言里面使用...开发程序是在IDEA里面写的,项目风格是Java+scala混搭采用maven管理,注意不是全scala项目,没有用sbt管理,sbt的国内下载非常慢,能访问外国网站的同学可以尝试一下。
的启动命令,同时使用--jars 标签把mysql驱动包,hadoop支持的压缩包,以及通过hive读取hbase相关的jar包加入进来,启动 Java代码 bin/spark-sql --jars...,大家可根据情况去舍 name := "scala-spark" version := "1.0" scalaVersion := "2.11.7" //使用公司的私服,去掉此行则使用默认私服...SparkContext(sc); //得到hive上下文 val hive = new org.apache.spark.sql.hive.HiveContext(sct); //执行sql,并打印输入信息...通过hive的元数据,查询hdfs数据或者hbase表等 //yarn-cluster集群模式不支持spark sql Error: Cluster deploy mode is not applicable...Spark SQL整合Hive时,一定要把相关的jar包和hive-site.xml文件,提交到 集群上,否则会出现各种莫名其妙的小问题, 经过在网上查资料,大多数的解决办法在Spark的spark-env.sh
背景 在INNODB 1.0之前查看数据库线程的方式是通过命令行: show full processlist 查看inodb的所有进程 列表信息 字段名 说明 id 一个标识...state 显示使用当前连接的sql语句的状态,只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending...1. information_schemma.INNODB_TRX 此表是查看当前运行的事务 表中对应的字段说明见下图 ?...3.information_schema.INNODB_LOCKS_WAITS 这个表可以让用户清楚的看到那个事务阻塞了那个事务,但是这里只给出事务ID,没有更详细的锁信息,但是lock_waits这张表和...locks,trx 是有关联的我们可以通过关联查询将其一并查出来 字段详情信息: ?
而执行节点输出数据集的大小与分布,分为两个部分:1) 初始数据集,也即原始表,其数据集的大小与分布可直接通过统计得到;2)中间节点输出数据集的大小与分布可由其输入数据集的信息与操作本身的特点推算。...所以,最终主要需要解决两个问题 如何获取原始数据集的统计信息 如何根据输入数据集估算特定算子的输出数据集 Statistics 收集 通过如下 SQL 语句,可计算出整个表的记录总数以及总大小 ANALYZE...serialization.format=|] Partition Provider Catalog Time taken: 1.691 seconds, Fetched 36 row(s) 通过如下 SQL 语句,可计算出指定列的统计信息...使用 HyperLogLog 的原因有二 使用 HyperLogLog 计算 distinct count 速度快速 HyperLogLog 计算出的 distinct count 可以合并。...例如可以直接将两个 bin 的 HyperLogLog 值合并算出这两个 bin 总共的 distinct count,而无须从重新计算,且合并结果的误差可控 算子对数据集影响估计 对于中间算子,可以根据输入数据集的统计信息以及算子的特性
DataSet/DataFrame DataSet/DataFrame都是Spark SQL提供的分布式数据集,相对于RDD而言,除了记录数据以外,还记录表的schema信息。...DataSet API支持Scala和Java语言,不支持Python。...DataFrame是DataSet以命名列方式组织的分布式数据集,类似于RDBMS中的表,或者R和Python中的 data frame。...3.Thriftserver beeline客户端连接操作 启动spark-sql的thrift服务,sbin/start-thriftserver.sh,启动脚本中配置好Spark集群服务资源、地址等信息...即可操作hive中的库和表。
1、hadoop快速入门 hadoop背景介绍 分布式系统概述 离线数据分析流程介绍 集群搭建 集群使用初步 2、HDFS增强 HDFS的概念和特性 HDFS的shell(命令行客户端)操作 HDFS...hive简介 hive架构 hive安装部署 hvie初使用 7、hive增强和flume介绍 HQL-DDL基本语法 HQL-DML基本语法 HIVE的join HIVE 参数配置 HIVE 自定义函数和...Spark 1、scala编程 scala编程介绍 scala相关软件安装 scala基础语法 scala方法和函数 scala函数式编程特点 scala数组和集合 scala编程练习(单机版WordCount...) scala面向对象 scala模式匹配 actor编程介绍 option和偏函数 实战:actor的并发WordCount 柯里化 隐式转换 2、AKKA与RPC Akka并发编程框架 实战:RPC...任务执行过程分析 RDD的Stage划分 5、Spark-Sql应用 Spark-SQL Spark结合Hive DataFrame 实战:Spark-SQL和DataFrame案例 6、SparkStreaming
image.png 比如,下面这样,使用load方法处理一个parquet文件,不指定文件形式: val userDF = spark.read.load("file:///home/hadoop...,执行spark-sql: spark-sql --master local[2] --jars ~/software/mysql-connector-java-5.1.27-bin.jar CREATE...image.png 当然也可以访问SparkUI页面的jobs标签页,查看相关信息。...3.操作mysql数据(替代Sqoop) scala实现: spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/hive...数据源数据查询 由于hive加载的数据,和mysql加载的数据源,都可以抽象为DataFrame,所以,不同的数据源可以通过DataFrame的select,join方法来处理显示。
; default sparksqltest Time taken: 0.131 seconds, Fetched 5 row(s) 在新建的数据库中新建一个表,并进行查看: spark-sql...second sspark-sql> show tables; sparksql_test falseTime taken: 0.12 seconds, Fetched 1 row(s) 向表中插入两行数据并查看...groupId> spark-sql_2.11 2.2.0 继续在pom添加打包和编译插件...spark.submit.deployMode DELOY_MODE 在client (提交机侧)或者 cluster (在集群中) 上运行driver程序 client --class Java/Scala...--status --supervise --total-executor-cores spark.cores.max --verbose 打印debug 信息 --version
15.3 与Hive Metastore结合 (1)Spark要能找到HDFS和Hive的配置文件 第1种方法:可以直接将core-site.xml、hdfs-site.xml和hive-site.xml...第2种方法:在Spark配置文件中指定Hadoop配置文件目录 (2)Spark SQL与Hive Metastore结合,直接使用spark.sql(“select … from table where...scala> spark.sql("show databases").show +------------+ |databaseName| +------------+ | default| |...test| +------------+ scala> spark.sql("show tables").show +--------+---------+-----------+...> (2)spark-sql [root@node1 ~]# spark-sql 17/10/24 10:17:21 WARN NativeCodeLoader: Unable to load native-hadoop
本文介绍使用Excel和Python来计算上述统计值,而Hive和Spark将放在下一篇中。...2、使用Excel计算统计值 咱们一个个来哈,在使用过程中还是学到了很多东西的,如果你都会了,也建议你看一下,嘻嘻!...共四个方法,其实可以分成两组,即统计样本标准差和总体标准差,首先回顾一下二者的计算公式: ?...3、使用Python计算统计值 使用Python的话,咱们分为四个方面来介绍,即使用list、numpy和pandas来计算数列的统计值。...ddof = 1) 可以看到,我们指定了一个参数ddof,这里ddof=0代表计算总计标准差,ddof=1代表计算样本标准差,默认ddof=0。
Scala是一种多范式的编程语言,设计初衷是要集成纯面向对象编程和函数式编程的各种特性。运行在Java虚拟机JVM之上,兼容现有的Java程序,并可调用Java类库。...Scala包含编译器和类库,以BSD许可证发布。 2.1. 下载 Spark使用Scala开发的,在安装Spark之前,先在各个节上将Scala安装好。.../bin/spark-sql --master yarn 为什么SparkSQL Cli只能以client模式运行?...完成后,再次执行spark-sql进入Spark的SQL Cli,运行命令show tables即可看到在Hive中创建的表。 示例: .... HiveContext hc = new HiveContext(ctx.sc()); hc.sql("use default"); // 选择使用哪个
,Schema就是数据内部结果,包含字段名称和字段类型 RDD[Person] 与 DataFrame比较 DataFrame知道数据内部结构,在计算数据之前,可以有针对性进行优化,提升性能...区别与联系 2、外部数据源 如何加载和保存数据,编程模块 保存数据时,保存模式 内部支持外部数据源 自定义外部数据源,实现HBase,直接使用,简易版本 集成Hive,从Hive表读取数据分析...,也可以将数据保存到Hive表,企业中使用最多 使用Hive框架进行数据管理,使用SparkSQL分析处理数据 3、自定义UDF函数 2种方式,分别在SQL中使用和在DSL中使用 4、分布式...SQL引擎 此部分内容,与Hive框架功能一直 spark-sql 命令行,专门提供编写SQL语句 类似Hive框架种hive SparkSQL ThriftServer当做一个服务运行,使用...方式一:SQL中使用 使用SparkSession中udf方法定义和注册函数,在SQL中使用,使用如下方式定义: 方式二:DSL中使用 使用org.apache.sql.functions.udf函数定义和注册函数
领取专属 10元无门槛券
手把手带您无忧上云