首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

「干货」Hive常用10大应用技巧『Hive系列2』

针对类似问题,只要清楚了Hive SQL运行顺序,便会迎刃而解,顺序如下: (步骤7) SELECT count(*) as col1 (步骤8) DISTINCT (步骤1) FROM (步骤3)...07 distinct与group by区别「计数场景」 在去重计数场景,我们经常应用count(distinct)来进行处理;有时也会先在内层通过group by聚合,然后再在外层计数count(...原理:distinct需要将col列全部内容都存储在一个内存,可以理解为一个hash结构,key为col,最后计算hash结构中有多少个key即可得到结果。...需要将所有不同存储在一起,内存消耗较大。 优点:时间复杂度低,适用于中小数据量级。...08 order by与distribute by sort by区别「排序场景」 在排序场景这两个函数使我们经常遇到,这两者区别在于: 「order by」 适用于全局排序,数据放在一个reduce

1.7K10

Citus 分布式 PostgreSQL 集群 - SQL Reference(查询分布式 SQL)

SELECT http://www.postgresql.org/docs/current/static/sql-select.html 在以下部分,我们将讨论您可以使用 Citus 运行不同类型查询...如果不是,Citus 每个 worker 运行 select distinct 语句, 并将列表返回给 coordinator,从中获取最终计数。...配置启用计数不同近似。...在这一步之后,count(distinct) 聚合会自动切换到使用 HLL,而无需查询进行任何更改。您应该能够在任何列上运行近似 count distinct 查询。...这可以控制空间使用。阈值可以由 topn.number_of_counters GUC 控制。它默认为 1000。 现实例子 现在来看一个更现实例子,说明 TopN 在实践如何工作

3.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

数据分析工具篇——HQL原理及优化

自动进行负载均衡; 策略就是把MR任务拆分成两个MR Job:第一个先做预汇总,第二个再做最终汇总; 第一个Job: Map输出结果集中缓存到maptask,每个Reduce做部分聚合操作,并输出结果...或者where需要用到)列;同时在value还会包含Tag信息,用于标明此value对应哪个; 按照key进行排序; 2)Shuffle阶段: 根据key进行hash,并将key/value...按照hash推送至不同reduce,这样确保两个相同key位于同一个reduce。...3)Reduce阶段: 根据key值完成join操作,期间通过Tag来识别不同数据。...,第一个任务借用多个reduce实现distinct去重并进行初步count计算,然后再将计算结果输出到第二个任务中进行计数

1.2K20

「PostgreSQL技巧」Citus实时执行程序如何并行化查询

我们如何知道某物是分布式还是单片? 在了解实时执行器工作方式之前,值得Citus执行器进行全面的复习。 当Citus收到查询时,我们首先查看它是否具有where子句分片键(也称为分发列)。...该任务在所有节点上通常是相同,但是由于它是纯粹Postgres计划,可以根据数据分布和估算进行更改。如果要查看所有查询计划,则可以扩展输出以获取所有4个分片任务。...然后将所得计数返回给协调器以执行最终聚合: ? 性能远远超过count(*) 虽然count(*)很容易看出它是如何工作,但是您可以执行更多操作。...最好部分仍然可以编写AVG,Citus负责底层复杂性。 除了汇总之外,Citus还可以告诉您何时加入并在本地执行这些加入。让我们向事件添加另一个:会话。...有了这两个,我们现在想要一个查询,该查询将告诉我们会话平均事件数,以及上周创建会话: SELECT count(events.*), count(distinct session_id

83110

数据库查询常用语句语法

如果省略,则MID()函数返回剩余文本 round(f,p)p为1表示f有一位小数,-1表示小数点左边置0 case 可以对数据进行多重筛选多重选择 CASE允许您在不同条件下返回不同。...跳脱字符:单引号 不能把一个单引号放在字符串,在数据库字符串定义都是用单引号,因此内容有单引号需要输出,将两个单引号使用输出即为一个单引号 即输出xx 则为字符串’ x’’x’ 群组函数 使用...如果表格元素多,但只作用一个元素,可以外加一个countdistinct 元素),或者后面加一个group by 元素 max() 取最大或者是最后最新 min() 取最小或者是首次颁发...union显示两个特定数据 将union放在两个select中间,只是将两个结果联结起来一起显示,并不是联结两个UNION ALL 这个指令目的也是要将两个 SQL 语句结果合并在一起。...if x and y and z are all NULL 子查询 select查询可以当作是一个,在另一个查询 相等判断 SELECT name, continent FROM world

89130

你好奇过 MySQL 内部临时存了什么吗?

使用 union 或 union distinct 关键字 SQL 语句。 派生(explain 输出结果 select_type 列为 DERIVED)。...把 t_internal_tmp_table 和 t_recbuf 两个连接查询得到记录全部写入临时之后,再临时记录进行分组(group by)、聚合(count)操作。...第 2 步,如果 e1 字段对应记录在临时已经存在,执行 count(i1) 函数得到当前分组新计数,然后把分组新计数更新到临时。...第 3 步,如果 e1 字段对应记录在临时还不存在,执行 count(i1) 函数初始化分组计数,然后把 e1 字段和分组计数插入到临时。...写入哪些字段到临时?)示例 SQL 3,和示例 SQL 1 不一样地方是 count() 函数多了个 distinct,表示统计每个分组不同 i1 字段数量(不包含 NULL)。

1.5K20

【MySql】聚合函数&&group by&&OJ题目

聚合函数 MySQL聚合函数用于对数据进行计算和统计,常见聚合函数包括下面列举出来聚合函数: 函数 说明 COUNT([DISTINCT] expr) 返回查询到数据数量...] expr) 返回查询到数据最大,不是数字没有意义 MIN([DISTINCT] expr) 返回查询到数据最小,不是数字没有意义 对于上面所列举出来聚合函数,下面我们通过一些案例来进行聚合函数运用...distinct select distinct count(distinct math) from exam_result; 统计数学成绩总分 select sum(math) from exam_result...EMP员工 DEPT部门 SALGRADE工资等级 如何显示每个部门平均工资和最高工资 显示每个部门平均工资和最高工资 select deptno,max(sal) 最高,avg...2000部门和它平均工资 统计各个部门平均工资 select avg(sal) from EMP group by deptno having和group by配合使用group by结果进行过滤

15810

MADlib——基于SQL数据挖掘解决方案(8)——数据探索之描述性统计

下面两个x和y集分别给出相关度为-1和+1情况。为简单起见,第一组x和y均值为0。...从数据库角度看,这些统计量简单而直观,目标属性列使用基本count(*)、count(distinct)函数,以及类似 is null 这样过滤条件执行数据库查询即可得到诸如此类统计量。...通常,属性x观测方差记作 ? ,定义如下: ? 标准差是方差平方根,记作 ? ,它与x具有相同单位。 方差离群特别敏感,因为它使用均值与其它平方。...函数为每个分组列独立计算汇总统计信息,也就是说分组列不合并在一起(类似SQLgrouping合计),这点与常规PostgreSQL风格GROUP BY命令不同。...row_count BIGINT 目标列行数。 distinct_values BIGINT 目标列不同个数。

1.4K20

MySQL 怎么用索引实现 group by?

如果当前记录分组前缀和上一条记录分组前缀一样,说明还是同一个分组,只需要进行分组求和、分组计数,不需要计算平均值。...count()、sum() 和 avg() 执行过程基本一样,不同之处在于: count() 对应类 Item_sum_count 只有 count 属性,只需要进行分组计数,不需要分组求和、计算平均值...松散索引扫描自带去重功能,不需要借助临时,和包含 distinct 关键字聚合函数天生更匹配。紧凑索引扫描则需要借助临时记录进行去重。...如果聚合函数是 count(distinct)、sum(distinct)、avg(distinct) 1 ~ 3 个,虽然紧凑索引扫描读取记录成本更低,但必须使用临时记录去重,这样一来,紧凑索引扫描读取数据...在执行阶段,通过把 avg() 字段累加到 sum 属性进行分组求和; count 属性进行自增实现分组计数;通过 sum / count 计算得到分组平均值。

4.9K20

MySQL 怎么用索引实现 group by?

如果当前记录分组前缀和上一条记录分组前缀一样,说明还是同一个分组,只需要进行分组求和、分组计数,不需要计算平均值。...count()、sum() 和 avg() 执行过程基本一样,不同之处在于: count() 对应类 Item_sum_count 只有 count 属性,只需要进行分组计数,不需要分组求和、计算平均值...松散索引扫描自带去重功能,不需要借助临时,和包含 distinct 关键字聚合函数天生更匹配。紧凑索引扫描则需要借助临时记录进行去重。...如果聚合函数是 count(distinct)、sum(distinct)、avg(distinct) 1 ~ 3 个,虽然紧凑索引扫描读取记录成本更低,但必须使用临时记录去重,这样一来,紧凑索引扫描读取数据...在执行阶段,通过把 avg() 字段累加到 sum 属性进行分组求和; count 属性进行自增实现分组计数;通过 sum / count 计算得到分组平均值。

6.2K60

分布式 PostgreSQL 集群(Citus)官方示例 - 实时仪表盘

目录 数据模型 汇总 过期旧数据 近似不同计数 使用 JSONB 非结构化数据 更多 Citus 提供大型数据集实时查询。...在实践,您可能希望将原始事件保留较短时间(一个月)并查看较长时间(年)历史图表。 汇总 您可以通过将原始数据汇总为预聚合形式来克服这两个缺点。...接下来部分将扩展基本架构,并向您展示如何解决经常出现问题。 近似不同计数 HTTP 分析一个常见问题涉及近似的不同计数:上个月有多少独立访问者访问了您网站?...假设我们进行了汇总,但我们没有使用 HLL,而是保存了确切唯一计数。这很好用,但您无法回答诸如在过去一周内,我们丢弃了原始数据有多少不同会话?之类问题。 使用 HLL,这很容易。...您可以使用以下查询计算一段时间内不同 IP 计数SELECT hll_cardinality(hll_union_agg(distinct_ip_addresses)) FROM http_request

1.6K30

Spark SQLHive调优

Hive执行是分阶段,map处理数据量差异取决于上一个stagereduce输出,所以如何将数据均匀分配到各个reduce,就是解决数据倾斜根本所在。...第一个 MR Job ,Map 输出结果集合会随机分布到 Reduce ,每个 Reduce 做部分聚合操作,并输出结果,这样处理结果 是相同 Group By Key 有可能被分发到不同...count distinct大量相同特殊 count distinct时,将为空情况单独处理,如果是计算count distinct,可以不用处理,直接过滤,在最后结果中加1。...当按照user_id进行两个Join操作时,默认Hash操作会按int型id来进行分配,这样会导致所有string类型id记录都分配到一个Reducer。...解决方法: select /*+mapjoin(x)*/* from log a left outer join ( select /*+mapjoin(c)*/d.* from ( select distinct

2.7K30

MySQL(五)汇总和分组数据

()函数{avg()函数忽略列为NULL行}; 2、count()函数 count()函数进行计数,可利用count()确定中行数目或符合特定条件数目; count()函数有两种使用方式:...①使用count(*)对表中行数目进行计数,不管表列包含是空(null)还是非空; ②使用count(column)特定列具有进行计数,忽略nullselect count(...*) as num_cust from customers; 这条SQL语句利用count(*)customers中所有行计数计数值在num_cust返回; select count(cust_email...) as cum_cust from customers; 这条SQL语句使用count(cust_email)cust_email列中有进行计数; PS:如果指定列名,则指定列为空行被count...all); ②只包含不同,指定distinct参数; ③如果指定列名,则distinct只能用于count();distinct不能用于count(*),因此不允许使用countdistinct

4.6K20

一场pandas与SQL巅峰大战(二)

hive方面我们新建了一张,并把同样数据加载进了,后续直接使用即可。 ? ? 开始学习 一、字符串截取 对于原始数据集中一列,我们常常要截取其字串作为新列来使用。...而在hive SQL,既有简易Like关键字匹配特定字符,也可以使用regexp_extract,regexp_replace这两个函数更灵活地实现目标。接下来我们举例说明。...: select count(distinct case when ts like '%2019-08-01%' then orderid end) as 0801_cnt, count(distinct...对于我们不关心行,这两列都为nan。第三步再进行去重计数操作。...四、窗口函数 row_number hiverow_number函数通常用来分组计数,每组内序号从1开始增加,且没有重复。比如我们每个uid订单按照订单时间倒序排列,获取其排序序号。

2.3K20

hive优化大全-一篇就够了

所以对于同一个 key 来说,对应 value 放前,大放后,这便是“小放前”原则。 若一条语句中有多个 Join,依据 Join 条件相同与否,有不同处理方法。...(默认为假) 合并文件大小:hive.merge.size.per.task=25610001000(默认为 256000000) 5.程序角度优化 5.1熟练使用SQL提高查询   熟练地使用...节省了两个临时读写是一个关键原因,这种方式也适用于 Oracle 数据查找工作。 SQL 具有普适性,很多 SQL 通用优化方案在 Hadoop 分布式计算方式也可以达到效果。...原因是 Hive ,主键为 null 项会被当做相同 Key 而分配进同一个计算 Map。...sum,count来说,不存在数据倾斜问题。 count(distinct),效率较低,数据量一多,准出问题,如果是多count(distinct )效率更低。

1.3K20

Hive性能优化(全面)

所以对于同一个 key 来说,对应 value 放前,大放后,这便是“小放前”原则。 若一条语句中有多个 Join,依据 Join 条件相同与否,有不同处理方法。...(默认为假) 合并文件大小:hive.merge.size.per.task=256*1000*1000(默认为 256000000) 4.程序角度优化 4.1熟练使用SQL提高查询 熟练地使用...节省了两个临时读写是一个关键原因,这种方式也适用于 Oracle 数据查找工作。 SQL 具有普适性,很多 SQL 通用优化方案在 Hadoop 分布式计算方式也可以达到效果。...原因是 Hive ,主键为 null 项会被当做相同 Key 而分配进同一个计算 Map。...sum,count来说,不存在数据倾斜问题。 count(distinct ),效率较低,数据量一多,准出问题,如果是多count(distinct )效率更低。

4.1K40

探究Presto SQL引擎(4)-统计计数

2.1.1 位图向量构建举个例子,假设user记录如下:图片这是很典型一张数据库。对于字段,如何构建位图索引呢?...两个向量进行交集运算:图片最后统计结果为1。 关于Bitmap思想,笔者认为最巧妙一点就是通过位运算实现了集合运算。如下图所示:图片在不同业务场景,这里集合可以赋予不同业务含义。...这里涉及到较为底层概率论知识,就先略过。略过数学知识,关键问题在于,我们如何将待基数统计问题跟上面的伯努利实验建立联系?这两个点之间桥梁就是Hash函数。...对于一个待进行基数统计集合(例如一个符合条件字段),为了降低估计错误率,我们分成m组。...三、分布式计数核心流程对于Hadoop入门案例wordcount,可以发现如果用Presto SQL表达如下(以tpch数据集customername字段为例):select w, count(1

1.1K20

Hive常用性能优化方法实践全面总结

同理,对于Hive分区查询,我们在写SQL时,通过指定实际需要分区,可以减少不必要分区数据扫描【当Hive列很多或者数据量很大时,如果直接使用select * 或者不指定分区,效率会很低下(...因此,建议分析数据、Hive SQL语句等,了解产生数据倾斜根本原因进行解决。 >> count(distinct) count(distinct)采用非常少reducer进行数据处理。...数据量小时执行效率影响不明显,但是当数据量大时,效率会很低,尤其是数据倾斜时候。 可以通过group by代替count(distinct)使用。...如果有split大小小于这两个,则会进行合并。...例如将这个参数设成5,那么就代表同一个MR job顺序执行5个task可以重复使用一个JVM,减少启动和关闭开销。但它对不同MR jobtask无效。

2.4K20
领券