
大数据hive
文章平均质量分 61
子小哥哥
业余时间整理的一点笔记,希望对我自己和大家都有帮助,如有问题可以一起讨论,一起进步
展开
-
hive场景题:求车门开闭次数
场景问题求每辆车车门的开闭次数事例数据vincardoorstatusdate102021-08-10 00:00:12.123112021-08-10 00:01:12.222102021-08-10 00:04:12.823102021-08-10 00:05:12.333112021-08-10 00:07:12.124112021-08-10 00:08:12.125112021-08-10 00:10:1原创 2021-08-10 17:38:55 · 231 阅读 · 0 评论 -
Hive中的列转行与MySQL中列转行的使用
Hive中的列转行使用到的函数:concat_ws(’,’,collect_list(列名))实现代码:select userid,concat_ws(',',collect_list(order_id)) as order_valuefrom col_liegroup by useridMySQL中的列转行使用到的函数:group_concat(列名)实现代码:select goods_id,count(distinct size_id) 失败数量,group_concat原创 2021-01-22 11:30:29 · 183 阅读 · 0 评论 -
数据仓库中的缓慢变化维
缓慢变化维定义:维度表里面的数据并非是始终不变的,总会随着时间发生变化;比如我们有一张我们公司的商品类别维度表,记录了商品类别的一些基本信息,那么随着时间的变化商品类别可能会在发生改变,假如猪肉之前属于肉禽类别,现将猪肉更改为属于零食类别针对这种变化,业务系统会直接将业务数据库中数据抽取过来直接覆盖,而不会考虑历史变化,不过在数据仓库中由于有时我们需要进行历史变化分析,或者防止商品品类统计数据记录错误,所以需要对这种变化进行相应的处理。处理办法第一种方法,直接在将原来维度覆盖,无法追溯历史变化:1原创 2020-12-22 14:44:09 · 299 阅读 · 2 评论 -
拉链表的制作
1、为什么要做拉链表拉链表,记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始日期。拉链表适合于:数据会发生变化,但是大部分是不变的。比如:订单信息从未支付、已支付、未发货、已完成等状态经历了一周,大部分时间是不变化的。拉链表格式订单ID订单金额订单状态生效开始日期生效结束日期11000.00未支付2019-01-012019-01-0111000.00已支付2019-01-022019-01-02原创 2020-12-13 11:06:33 · 2507 阅读 · 2 评论 -
hive优化整理
1.1 hive的特征1、可以通过SQL轻松访问数据,从而实现数据仓库任务,如提取、转换、加载(ETL),报告和数据分析;2、可以使已经存储的数据结构化;3、可以直接访问存储在HDFS或者其他数据存储系统(HBase)中的文件4、它提供了类似sql的查询语句HiveQL对数据进行分析处理5、数据的存储格式有多种,比如数据源二进制格式,普通文本格式等。1.2hive的优势hive的强大...原创 2020-12-11 10:21:22 · 216 阅读 · 0 评论 -
mapjoin的使用方法以及注意事项
mapjoin的使用方法以及注意事项mapjoin的简介MAPJION会把小表全部加载到内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在map是进行了join操作,省去了reduce运行的效率也会高很多,算是hive中的一种优化mapjoin的使用方法例如:select /*+ mapjoin(t)*/ f.a,f.b from A f join B t on f.a=t.a 前提b表是一张小表,默认25m的表是小表注意事项使用mapjoin时,一次性加载到内存原创 2020-09-10 10:51:50 · 13608 阅读 · 0 评论 -
Hive的文件存储格式
textFile textFile为默认格式 存储方式:行存储 缺点:磁盘开销大;数据解析开销大;压缩的text文件,hive无法进行合并和拆分 sequencefile 二进制文件,以<key,value>的形式序列化到文件中 存储方式:行存储 优点:可分割、压缩,一般选择block压缩,与hadoop api中的mapfile是互相兼容的。 Rcfile 存储方式:数据按行分块 每块按照列存储 压缩快 快速列转载 2020-05-20 20:32:02 · 177 阅读 · 0 评论 -
dmp项目大数据平台规模及使用到组件
CDH集群使用到的所有角色集群配置集群上所有组件及其版本原创 2020-03-13 14:42:46 · 486 阅读 · 0 评论 -
数仓中全量表,增量表,快照表,临时表,拉链表区别
全量表全量表:大部分业务数据是使用全量表进行同步,全量表无分区,每天同步方式是直接删除数据在重新拉去全量数据,表中的数据是截止前一天中mysql中的数据。增量表增量表:是按天进行分区的分区表,今天将昨天新增的数据直接存放在昨天的分区中,每个分区都是存放的每天增量数据。快照表快照表:按天分区,每一天的数据都是截止前一天最新的数据。临时表临时表:为了解决某一个问题而建立的中间表。相当于是...原创 2020-03-12 14:10:28 · 5344 阅读 · 0 评论 -
hive中数据更新以及实现
问题hive暂时没有实现更新操作的,所以要更新数据就要通过自己手动进行更新。拿业务数据来说,使用sqoop脚本是可以直接把全量数据抽取到hive中,sqoop也有两种增量抽取数据的方法,一种是基于自增列,一种是基于时间列。可以参考:https://editor.youkuaiyun.com/md/?articleId=102798126。但是这两种方法里面是只可以把新增的数据拉去过来的,变化的数据是没有抽...原创 2020-03-12 13:30:04 · 14118 阅读 · 0 评论 -
hive中sort by、order by、cluster by、distribute by各代表的意思
区别order by:对输入做全局排序,因此只有一个reduce(多个reduce无法保证全局有序),只有一个reduce,当输入规模较大时,需要较长的计算时间。sort by:局部排序,其在数据进入reduce前完成排序distribute by:按照指定字段对数据进行划分输出到不同的reduce中。cluster by:除具distribute by功能外还具有sort by的功能。...原创 2020-03-03 13:19:23 · 1226 阅读 · 0 评论 -
hive建表时中文注释乱码解决办法
hive中show create table出现注释乱码的问题解决办法1、进入mysql,查看hive数据库当前编码show create database hive;2、如果是utf8 则执行下面sql将 hive 数据库默认编码改成 latin1alter database hive default character set latin1 ;3、执行下面sql ,修改 表...转载 2020-03-02 13:54:02 · 541 阅读 · 0 评论 -
sqoop抽取数据报错: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxrwxr-x
cdh集群sqoop抽取数据遇到权限问题Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxrwxr-x更改hdfs上user文件夹的权限即可:sudo -u hdfs hadoop fs -chmod -R 777 /user附:更改hdfs所属组权限:sudo -u hdfs ...原创 2020-02-26 16:38:19 · 585 阅读 · 0 评论 -
sqoop抽取数据报错:Failed to submit application to YARN : Application rejected by queue placement policy
cdh集群sqoop在抽取mysql时报错:Failed to submit application_1582700194294_0010 to YARN : Application rejected by queue placement policy解决办法在CM界面修改动态资源配置进入到动态资源配置按下图进到放置规则中修改配置,即可解决...原创 2020-02-26 16:26:51 · 3754 阅读 · 0 评论 -
hive中的常用窗口函数
开窗函数关键字 over()格式:函数名(列名) over(partition by 列名 order by 列名)排序相关的开窗函数1、row-number() over():对相等的值不进行区分,会依次进行排序。2、rank() over():会跳着排序,即相等的值排名一样,然后跳过下一名,如:两个第一名,接下来的一个就是第三名3、dense_rank() over():不会跳序排...原创 2020-02-18 15:01:24 · 681 阅读 · 0 评论 -
Hive解析json(get_json_object)
get_json_object(string json_string, string path)说明:第一个参数填写json对象变量,第二个参数使用$表示json变量标识,然后用 . 或 [] 读取对象或数组;如果输入的json字符串无效,那么返回NULL。每次只能返回一个数据项。举例:data 为 test表中的字段,数据结构如下:data ={ "store": ...转载 2019-10-12 11:56:25 · 1946 阅读 · 2 评论