大数据Hive专栏
文章平均质量分 61
大数据数据仓库Hive工具
栗子呀!
这个作者很懒,什么都没留下…
展开
-
Hive 开窗必需掌握的rank&dense_rank&row_number
函数说明注意:必须和over() 一起使用rank() 排序相同时会重复,总数不会变dense_rank() 排序相同时会重复,总数会减少row_number() 会根据顺序计算例如:rank dense_rank row_number80 1 1 180 1 1 278 3 2 376 4 3 4练习:namesubjectscore孙悟空语文87孙悟空数学95原创 2021-01-31 19:36:24 · 212 阅读 · 0 评论 -
全量&增量数据同步方法(Hive date_add & date_sub)
全量数据与增量数据同步1、不关心主键:a、第一次直接全量同步:insert overwrite table target select * from sourceb、第二次以后采用增量同步:表一般都有createtime, updatetime如:insert into table targetselect * from source where to_date(updatetime) >= date_add(CURRENT_DATE,-1) /(方式二)date_sub(to_da原创 2021-01-25 13:32:26 · 3575 阅读 · 0 评论 -
Hive创建表
CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)LIKE 允许用户复制现有的表结构,但是不复制数据COMMENT可以为表与字段增加描述ROW FORMAT 设置行数据分割格式DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMIN原创 2021-01-13 02:06:26 · 2128 阅读 · 0 评论 -
Hive 内部表&外部表
Hive的表结构本质就是Hadoop的目录/文件– hive默认表存放路径一般都是在你工作目录的hive目录里面,按表名做文件夹分开,如果你有分区表的话,分区值是子文件夹,可以直接在其它的MR job里直接应用这部分数据1、查看Hive中表结构:方式一:show create table 表名;show create table orders;方式二:desc 表名;desc orders;2、删除HIve中表drop table 表名;drop table orders;原创 2021-01-13 01:52:07 · 1334 阅读 · 0 评论 -
判断数据是增量分区&全量分区
如何判断数据是增量分区,还是全量分区(保存数据T-1的全量,通常保存进一个月的数据为T-1的全量)增量形式:不包含历史所有的数据,只是当天的数据 where dt between ‘T-7’ and ‘T-1’2020-12-19 1000000 (当天数据)2020-12-18 12000002020-12-17 1009000全量形式: where dt=‘T-1’ 多表关联2020-12-19 1000000 (当天+历史所有数据)2020-12-18 99000002020-12-原创 2021-01-13 01:48:23 · 3230 阅读 · 0 评论 -
Hive的collect_list&collect_set函数
collect_list与collect_setselect collect_list(‘1’,‘2’,‘3’) ->[“1,2,3”] 返回是一个list它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重。create tablet_visit_video (username string,video_name string) partitioned by(day string)row format delimited fi原创 2021-01-13 01:46:47 · 25752 阅读 · 3 评论 -
Hive分区&分桶
Hive分区&分桶一、Hive分区分区常见操作:2、Hive 静态分区3、动态分区分区细节:二、Hive 分桶Hive 分桶应用场景一、Hive分区粗粒度的划分业界常用日作为分区分区作用:减少查询的数据量、提高查询效率通过partition by 进行定义举例:create table `udata_partition`(`user_id` string,`item_id` string,`rating` int)partitioned by(`dt` string)row原创 2021-01-13 01:42:28 · 306 阅读 · 0 评论 -
快速确定HIve表中数据是否重复
经验:如何快速知道订单号是否重复?(因为Hive中没有主键,mysql严格要求主键)可以将订单号作为主键方式一: cnt 没有去重,order_cnt 去重, 如果得到结果相同,则表是没有重复selectcount(*) cnt ,count(distinct order_id) order_cntfrom orders//结果:cnt order_cnt3421083 3421083 方式二:根据订单号进行分组,订单号不能有大于1的情况,就代表没有重复select order_id,原创 2021-01-13 01:28:28 · 4478 阅读 · 0 评论 -
Hive优化
Hive 优化1、数据调研:定义枚举值查询是否为 0-6方式一:select distinct order_dowfrom orders方式二:select order_dowfrom ordersgroup by order_dow注意:在工作中针对数据去重,能使用group by 就不使用distinct使用group by 多个reduce进行处理distinct 所有数据在一个reduce中进行处理测试一下参数代码://group by 需要reduce操作,所以用一原创 2021-01-13 01:26:27 · 226 阅读 · 0 评论 -
Hive的例题
数据处理的方法论:了解产品/运行的需求(需求解决什么问题?定义指标和口径(产品和需求方)) ->数据收集(数据准备,数据调研!! 数据获取方式有:①接口调取QMQ kafka,进行消息队列获取②爬虫③从文件④关系型业务数据库⑤数据仓库ETL,注意倾向于从数据仓库中获取数据)-> 数据处理(数据清洗 ETL(数据的提取、转换、加载),观察缺失值(NULL 或 空字符),重复值(订单量重复统计->去重),异常值(二分类变量中0,1出现其他类型,与产品方进行确认后剔除,合并多个数据集,数据类原创 2021-01-12 09:59:37 · 521 阅读 · 0 评论