索引

Hive优化

安稳与你 提交于 2020-01-28 01:15:38
一、什么时候可以避免执行MapReduce?select *where语句中只有分区字段 二、Jion优化驱动表最右边查询表表的大小从左边到右边依次增大标志机制显示的告知查询优化器哪张表示大表/*+streamtable(table_name)*/ 三、Map-side聚合sethive.map.aggr=true;这个设置可以将顶层的聚合操作放在Map阶段执行,从而减轻清洗 阶段数据传输和Reduce阶段的执行时间,提升总体性能。缺点:该设置会消耗更多的内存。执行select count(1) from wlan; 四、Localhadoop本地模式SETmapred.job.tracker=local; 测试 select 1 from wlan limit 5; 下面两个参数是local mr中常用的控制参数: 1,hive.exec.mode.local.auto.inputbytes.max设置local mr的最大输入数据量,当输入数据量小于这个值的时候会 采用local mr的方式 2,hive.exec.mode.local.auto.tasks.max设置local mr的最大输入文件个数,当输入文件个数小于这个值的时 候会采用local mr的方式默认执行模式: hive (default)> select count(1) t1; Query ID =

Solr与HBase架构设计

早过忘川 提交于 2020-01-28 00:30:39
摘要:本篇是本人在做一个大数据项目 时 ,对于系统架构的一点总结,如何在保证存储量的情况下,又能保证数据的检索速度 。 前提: Solr、SolrCloud提供了一整套的数据检索方案,HBase提供了完善的大数据存储机制。 需求: 1、对于添加到HBase中的结构化数据,能够检索出来。 2、数据量较大,达到10亿,100亿数据量 。 3、 检索的实时性要求较高,秒级更新 。 说明: 以下是使用Solr和HBase共同搭建的系统架构 。 1.1 一次性创建索引 l、 删除全索引 效率很高,可以关闭 Solr 后,直接删除 Data 文件。 2、 重新创建全索引 拉取 HBase 中全数据,分批次创建索引。 1.2 增量创建索引 1、触发器发送数据到 Solr 建索引。 配置并使用 HBase 触发器功能,配置实现如下: alter 'angelHbase', METHOD => 'table_att', 'coprocessor' => '/home/hbase/hbase-0.94.18-security/lib/solrHbase.jar|solrHbase.test.SorlIndexCoprocessorObserver|1073741823|' alter 'angelHbase', METHOD =>'table_att_unset', NAME =>

二、Pandas基础:DataFrame

混江龙づ霸主 提交于 2020-01-27 20:43:33
/*--> */ /*--> */ 一、DataFrame简介 一个表型格数的、据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。 二、DataFrame创建 DataFrame可以使用数组,列表和字典等方式进行创建 当DataFrame数组和列表创建时,可指定参数index(行索引)和columns(列索引),如果不指定,默认用0的列表为序列号 创建后的DataFrame,亦可修改行列参数 import pandas as pd a = pd.DataFrame( [ ['小红', '小花', '小兰'], [85, 93, 99] ]) b = pd.DataFrame( [ ['小红', 85], ['小花', 93], ['小兰', 99] ], columns=['姓名', '成绩'] ) data = { 'apart': ['101', '102', '103', '104'], 'profits': [681.5, 125, 15.5, 160], 'year': [2007, 2010, 2012, 2008], 'months': 8 } c = pd.DataFrame(data, index=['one', 'two', 'three', 'four'])

MySQL索引详解

故事扮演 提交于 2020-01-27 20:35:09
目录 B-树 B+树 B+树相比B-树的优势 磁盘IO次数更少 查询性能更稳定 范围查询更简单 B-树 在B-树中,无论中间节点还是叶子节点都带有卫星数据(数据行记录) B+树 在B+树中,只有叶子节点带有卫星数据,中间节点仅仅是索引。 在MySQL中,主键索引的叶子节点直接包含数据行记录,二级索引叶子节点则包含主键键值,需要回表,即回主键索引中查找数据行记录 B+树相比B-树的优势 磁盘IO次数更少 B+树的每个节点都对应着一个磁盘页,树的高度意味着查询所经历的磁盘IO的次数。 由于B+树中间节点不包含数据记录,所以同样大小的磁盘页可以容纳更多的节点元素(关键字),B+树比B-树更加“矮胖”,磁盘IO次数更少。 查询性能更稳定 B+树的查询必须查到叶子节点,而B-树只要找到匹配元素即可,无论位于中间节点还是叶子节点,因此B-树查找性能不稳定(最好只查到根节点,最坏到叶子节点) 范围查询更简单 对于范围查询,比如要查3-11之间的元素 B-树的范围查找过程 自顶向下,查找到范围的下限(3) 中序遍历到元素6 中序遍历到元素8 中序遍历到元素9 中序遍历到元素11,遍历结束 B+树的范围查找过程 自顶向下,查找到范围的下限(3) 通过链表指针,遍历到元素6, 8 通过链表指针,遍历到元素9, 11,遍历结束 参考:https://blog.csdn.net/qq_35571554

MySQL 索引深入剖析

点点圈 提交于 2020-01-27 19:02:41
1. 索引是什么? 1.1. 索引是什么 一张表有 500 万条数据,在没有索引的 name 字段上执行一条 where 查询: select * from user_innodb where name = ' 青山 ' ; 如果 name 字段上面有索引呢?在 name 字段上面创建一个索引,再来执行一下相 同的查询。 ALTER TABLE user_innodb DROP INDEX idx_name; ALTER TABLE user_innodb ADD INDEX idx_name (name); 有索引的查询和没有索引的查询相比,效率相差几十倍。 通过这个案例大家应该可以非常直观地感受到,索引对于数据检索的性能改善是非 常大的。 那么索引到底是什么呢?为什么可以对我们的查询产生这么大的影响?创建索引的 时候发生了什么事情? 1.1.1.索引定义 维基百科对数据库索引的定义: 数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询、更新数据库表中数据。 数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果没有 索引的话,我们要从 500 万行数据里面检索一条数据,只能依次遍历这张表的全部数据, 直到找到这条数据。 但是我们有了索引之后,只需要在索引里面去检索这条数据就行了,因为它是一种 特殊的专门用来快速检索的数据结构

泛型与非泛型的区别及详细解释

坚强是说给别人听的谎言 提交于 2020-01-27 18:49:30
使用集合组织相关数据 1:简介 我们都知道数组是一组具有相同数据类型的数据的集合,在程序中可以存储数据,但是数组有一个缺点,即当其中的元素初始化后,要在程序中动态的给数组添加,或删除某个元素是很困难的。那么如何解决这个问题?.NET给我们提供了各种集合对象,如ArrayList和Hashtable。它们都可以很好的进行元素的动态添加,删除等操作。此外还要介绍C#中的一个重要概念——泛型。 2:ArrayList 1:ArrayList非常类似于数组,也有人称它为数组列表,ArrayList是一个可动态维护的集合。数组的容量是固定的,而ArrayList的容量是可以根据需要自动扩充,它的索引会根据程序的扩展而重新进行分配和调整。ArrayList提供了一系列的方法对其中的元素,进行访问增加,删除的操作。 2:和数组类似,ArrayList中存储的数据称为元素;ArrayList可以保存的元素就是ArrayList的容量,其默认初始容量为0;可以通过索引访问ArrayList中的元素,索引从0开始。 3:ArrayList类属于System.Collections命名空间,这个命名空间包含接口和类,这些接口和类定义各种对象(如列表,队列,位数组,哈希表和字典)的集合,ArrayList就属于集合中的一种,因此在使用ArrayList类之前一定要引入System

七、索引优化分析

半腔热情 提交于 2020-01-27 16:17:58
SQL性能下降的原因 查询语句写的不好 索引失效 关联查询太多 服务器调优及各个参数的的设置(缓冲、线程数等等) 常见的JOIN查询 1、SQL的执行顺序 手写的顺序: 真正机器执行的顺序: 2、七种join查询 最后两种语法mysql不支持,但是我们可以用union来联合其他的查询结果来拼凑出最终结果。 索引 1、什么是索引? MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 也可以简单理解为“排好序的快速查找数据结构” 数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。 一般来说索引本身也很大,不可能全部存储在内存中,因此所以往往以索引文件的形式存储在磁盘上。 2、索引的优势和劣势 优势 提高了数据检索的效率,降低了数据库的IO成本 降低了数据排序的成本,降低了CPU的消耗 劣势 实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的 虽然索引大大的提高了查询速度,但同时也会降低更新表的速度,因为进行更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息 3、索引的分类 单值索引:即一个索引只包含单个列

python_pandas DAY_18(4)分组计算

拥有回忆 提交于 2020-01-27 12:06:45
学习内容 pandas分组计算 Tips:分组求和步骤 1)分组 2)应用 3)合并 重点 1.一般分组 import pandas as pd import numpy as np df = pd . DataFrame ( np . random . randint ( 10 , 20 , ( 4 , 2 ) ) , index = [ 'a' , 'b' , 'c' , 'd' ] , columns = [ "one" , "two" ] ) print ( df ) print ( df [ "one" ] . groupby ( df [ 'two' ] ) ) #这个关键字分组只能按列分组 one two a 11 12 b 16 14 c 15 16 d 12 13 < pandas . core . groupby . generic . SeriesGroupBy object at 0x00000297773CDC50 > print ( df [ "one" ] . groupby ( df [ 'two' ] ) . mean ( ) ) two 11 14 14 16 15 15 17 14 Name : one , dtype : int32 2.按字典表分组 import pandas as pd import numpy as np df = pd