hive
文章平均质量分 80
木给哇啦丶
这个作者很懒,什么都没留下…
展开
-
hive笛卡尔积优化、join或left join 无on条件优化
正常业务中我们是不希望看见笛卡尔积的,因为它会造成数据膨胀,数据成倍增长,极有可能使得计算崩溃。但是有时因为业务需要,我们又不可避免笛卡尔积,那我们该如何做呢?接下来我们来看一种场景。业务背景imeis_table表中只有imei字段 数据量40亿条左右dim_table表一张维表,数据量800+条目的是的imeis_table表与dim_table表做笛卡尔积,结果就是40亿*800+条,显然数据量是非常大常规写法(pyhton脚本)import osCMD = ...原创 2020-10-14 15:57:45 · 3972 阅读 · 3 评论 -
Hive按特定时间窗口分组求和实例
样例数据: > select * from tmp.lanfz_log;2020-09-14 13:47:12,771 [ForkJoinPool-1-worker-3] INFO cn.jpush.spark.parser.SqlStatisticsParser - queryId : e1a036de-3463-4ab9-a3e9-9ba6e6229227usera lb 2020091410 60 ..原创 2020-09-14 13:57:18 · 1875 阅读 · 0 评论 -
HiveSQL或SparkSQl中group by与grouping sets、with cube和with rollup用法演示
GROUPING SETS: 根据不同的维度组合进行聚合,等价于将不同维度的GROUP BY结果集进行UNION ALL数据准备:建表语句:create table tmp.gb(a string,b string,c int)row format delimited fields terminated by '\t' stored as textfile;案例数据:1 1 12 1 22 2 22 2 32 1 21 2 2使用案例:第一种组合:select原创 2020-09-04 17:35:49 · 1195 阅读 · 1 评论 -
hive sql转换为MapReduce的过程
原创 2020-08-06 15:09:32 · 555 阅读 · 0 评论 -
Hive mapjoin使用
方法一set hive.auto.convert.join = true; --是否开自动mapjoinset hive.mapjoin.smalltable.filesize;--mapjoin的表size大小以上两个参数同时使用,在hive.auto.convert.join为true时,只要小表size小于hive.mapjoin.smalltable.filesize的设置值,并且小表不是关联操作的最后一张表,小表就会走mapjoin。set hive.auto.conve...原创 2020-07-31 10:56:52 · 8789 阅读 · 0 评论 -
Hive 建表语句大全
create table if not exists tmp.create_test( uid bigint comment '推送用户id' ,app_key string comment 'app key' ,platform string comment '平台:a,i,w' ,itime bigint comment '10位业务时间戳' ,imei string comment '设备串号' ,channel string comment '渠道'.原创 2020-07-31 10:39:07 · 1529 阅读 · 0 评论 -
Hive sql转换为MapReduce的过程
原创 2020-07-31 10:34:41 · 623 阅读 · 0 评论 -
Hive存储优化之Cluster By + Parquet
场景: 在业务场景中,会经常有join或者group by操作,这样会使数据打散,使Parquet无法达到最大的压缩比,使用Cluster By使相同的key聚合排序,达到Parquet最大的压缩比基础知识:要熟悉以下概念,简单介绍一下Distribute By:reduce阶段key值聚合分发Sort By:分组排序Cluster By =Distribute By + Sort ByParquet:列存储模式 + 列压缩优化示例:CREATE TABLE...原创 2020-07-11 15:23:32 · 507 阅读 · 0 评论 -
pyspark、hive和dateframe临时udf使用案例
背景 在我们数据开发过程中业务中有很多计算时间差值的场景,公司业务数据时间格式基本是:yyyyMMdd,,而spark或者hive提供内置函数datediff(),需要传入的时间参数格式:yyyy-MM-dd,为开发时简化代码量与代码可读性,我们通过创建临时udf可以灵活的解决该问题。pyspark import time def dd_datediff(date_now, date_ago, date_type="day"): date_now = time...原创 2020-07-02 22:03:38 · 402 阅读 · 0 评论 -
大数据数据仓库的架构与设计
数据仓库的概念 数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。特点 面向主题:数据仓库都是基于某个明确主题,仅需要与该主题相关的数据,其他的无关细节数据将被排除掉 集成的:从不同的数据源采集数据到同一个数据源,此过程会有一些ETL操作 随时间变化:关键数据隐式或显式的基于时间变化 信息本身相对稳定:数据装入以后一般只进行查询操作,没有传统数据库的增删...原创 2020-07-02 22:01:04 · 1471 阅读 · 0 评论 -
Hive中yyyymmdd和yyyy-mm-dd日期之间的切换
方法1: from_unixtime+ unix_timestamp--20171205转成2017-12-05select from_unixtime(unix_timestamp('20171205','yyyymmdd'),'yyyy-mm-dd') from dual;--2017-12-05转成20171205select from_unixtime(unix_timestamp('2017-12-05','yyyy-mm-dd'),'yyyymmdd') fro...原创 2020-06-18 21:55:38 · 651 阅读 · 0 评论 -
Hive表随机抽样取数
1、按比例随机抽样- 样本总量M, rand()<=(N/M+μ)例如:如果抽10%的话select * from table where rand()<=0.1;特别注意的是:抽样迁先确认表的总记录数反例:select * from tableorder by rand() limit 43659307;2、精确取N条- 样本总量M, 你可以先 rand()<=(N/M+μ), 取多一些随机样本- 然后再在这些随机样本里随机取N条这样一...原创 2020-06-18 21:53:20 · 3750 阅读 · 0 评论 -
hive join关联一图读懂
原创 2020-06-18 21:49:29 · 474 阅读 · 0 评论 -
pyspark行转列、列转行或宽表转窄表、窄表转宽表
列转行(宽表转窄表)from pyspark.sql import functions as Fdef unpivot(df, keys): #参数说明 dfdataframekeys 待转换表中需要保留的主键key,以list[]类型传入 #转换是为了避免字段类不匹配,统一将数据转换为string类型,如果保证数据类型完全一致,可以省略该句df = df.select(*[F.col(_).astype("string") for ...原创 2020-06-11 11:58:39 · 4561 阅读 · 4 评论 -
Hive中join时null如何处理
Hive中join时,如果关联的key值null则会过滤掉该行,看如下演示:建表并插入数据create table tmp.bbb as select 1/0 as id, 'a' as a;create table tmp.aaa as select 1/0 as a, 'a' as a;表tmp.aaa 表tmp.bbb...原创 2020-06-08 22:40:59 · 2145 阅读 · 0 评论 -
Hive优化十大原则
一. 表连接优化1. 将大表放后头Hive假定查询中最后的一个表是大表。它会将其它表缓存起来,然后扫描最后那个表。因此通常需要将小表放前面,或者标记哪张表是大表:/*streamtable(table_name) */select /*+ MAPJOIN(time_dim) */ count(1) from store_sales join time_dim on (ss_sold_time_sk = t_time_sk)或者使用参数set hive.auto.con...原创 2020-06-07 21:59:47 · 587 阅读 · 0 评论 -
map和reduce数量如何设置
一、控制Hive中Map和reduce的数量Hive中的sql查询会生成执行计划,执行计划以MapReduce的方式执行,那么结合数据和集群的大小,map和reduce的数量就会影响到sql执行的效率。除了要控制Hive生成的Job的数量,也要控制map和reduce的数量。1、map的数量,通常情况下和split的大小有关系hive中默认的hive.input.format是org.apache.hadoop.hive.ql.io.CombineHiveInputFormat,对于co..原创 2020-05-25 21:45:47 · 801 阅读 · 0 评论 -
Hive存储读取json
1. 创建表CREATE TABLE tmp_json_test (appkey string,json string)ROW FORMAT DELIMITEDFIELDS TERMINATED BY '|'STORED AS textfile ;2. 导入数据,样例如下:load data local inpath '/home/jb-gongmingfeng/test_data.log' overwrite into table t...原创 2020-05-25 21:40:40 · 345 阅读 · 0 评论 -
Hive skew Join(数据倾斜) 的解决方案
为什么会数据倾斜?由于Hive 在join的时候会将相同的key 在最后都汇聚到同一个Reduce 进行处理 , 所以当Join 操作中某个表中的一些Key 数量远远大于其他,则处理该Key的Reduce 将成为瓶颈 .如 : select a.* , b.* from table_a a join table_b b on a.id =b.id ; 如果table_a中的id数量远...原创 2020-01-30 13:40:58 · 5973 阅读 · 7 评论 -
Hive MapReduce异常Job initialization failed: java.io.IOException: Split metadata size exceeded
namenode: HDFS的文件元信息,包括位置、大小、分块信息等,保存在NameNode的内存中的,每个对象大约占用150个字节。问题描述:hive计算时,数据输入文件的索引总量超过集群限制(10M),导致无法进行计算,job抛错源码剖析:hive.index.compact.query.max.entries: 使用压缩索引查询时能读到的最大索引项数, 默认是10000000;负值代...原创 2020-01-30 13:37:25 · 768 阅读 · 0 评论 -
Hive MapReduce小文件问题异常处理
namenode: HDFS的文件元信息,包括位置、大小、分块信息等,保存在NameNode的内存中的,每个对象大约占用150个字节。问题描述:hive计算时,数据输入文件的索引总量超过集群限制(10M),导致无法进行计算,job抛错源码剖析:hive.index.compact.query.max.entries: 使用压缩索引查询时能读到的最大索引项数, 默认是10000000;负值代...原创 2020-01-30 13:31:29 · 259 阅读 · 0 评论 -
hive中count&sum的区别
首先创建一张测试表 >create table tmp.guanwm_test (a string, b int);>insert into table tmp.guanwm_test values ("a", 1);>insert into table tmp.guanwm_test values ("b", 2);>insert into table...原创 2020-01-30 13:21:10 · 1497 阅读 · 0 评论 -
hive count distinct count(distinct Columns) Columns为多列时慎用,有坑!!!
1,问题 表中实际无重复数据,但是经过count(distinct imei,wifi,ssid),数据量变少了。2,原因 distinct 多列时任意列为null值,均返回null,hive的count()函数对空值是不做处理的,所以数据减少3,验证 4,解决办法 4.1,将distinct后列用小括号括起来(所有列均为null...原创 2020-01-30 13:18:37 · 3382 阅读 · 0 评论 -
hive安装配置详解
准备环境:centos6.5 hadoop2.6.0 jdk1.8 SSH互信配置 防火墙关闭hive步骤1,安装mysql2,安装hive原创 2016-11-01 16:48:04 · 288 阅读 · 0 评论