hive
文章平均质量分 57
bitcarmanlee
这个作者很懒,什么都没留下…
展开
-
iceberg对比hive优势
在传统的实时数仓中,由于列式存储相对行式存储有较高的查询性能,我们一般采用parquet,orc等列存储数据格式。传统的流式数据入库的过程中对小文件进行合并会产生很多问题,比如流式数据不断的往hive表进行写入,如果同时有一个合并程序进行小文件的合并,那么这时候对同一份数据进行读写。当有实时指标计算的需求时,可以使用 flink 实时计算框架,来构建近实时数仓,而且iceberg 存储全量数据,且仍然有批计算能力,可以在流式计算作业运行的同时,跑一个批作业来进行数据回溯或者数据纠正。原创 2023-08-02 19:12:16 · 3347 阅读 · 0 评论 -
iceberg总结简介
Iceberg 会在插入数据的时候根据分区策略跟踪新数据的分区信息,并将其记录在元数据中;当修改 Iceberg 表中的分区规则时,修改之前的数据还是按照以前的分区方式存储,而修改之后的数据才会按照新的规则存储,修改前后的分区元数据是分开存储的,这就意味着在同一个表中允许存在多种分区策略。最上层中记录了 Iceberg 表当前元数据的版本,对应的是version-hint.text文件,version-hint.text文件中只记录了一个数字表示当前的元数据版本,初始为 1,后续表每变更一次就加 1。转载 2023-08-02 16:02:02 · 1639 阅读 · 0 评论 -
sql求交集与差集
日常工作中,针对两个表A,B,求A与B表中同一个字段的交集与差集是常见需求,下面我们来总结一下求交集与差集的方法。假设现在有两张表A,B,A,B表中均有一个字段为id,现在我们想求A与B中都存在的id有多少个(去重),在A中但不在B中的id有多少个。原创 2022-12-09 22:43:40 · 13695 阅读 · 0 评论 -
sql not in 查询结果为空解决
而任何值与NULL值进行对比,结果都为null,即idxxx null 返回的都为false,最终not in子句不会返回任何一行数据。result表与xxx表中都有数据,且result表中的id数量多余xxx表,正常应该输出一个正整数,但是该语句查询出来的结果为0,很显然不符合预期。3.通过not in,查找在result中且不在xxx表中的id,并对id做去重,最后进行count计数操作。总结一下就是,如果not in中只要有一个id位null,就会导致返回的结果为0。原创 2022-12-09 22:01:35 · 3706 阅读 · 1 评论 -
sql计算占比
计算占比是日常分析中常见的需求,下面我们来小结一下怎么用sql来实现计算占比。原创 2022-11-23 12:38:23 · 10151 阅读 · 2 评论 -
Sql case when 用法实例详解
sql中case when还是比较常见的用法。经常会出现一段时间不用,相关写法与语法又记不太清楚的情况。干脆就记一下,以备不时之需。1.准备数据现在有一张表xxx,里面有一个字段叫basicinfo_credit_status,类型为整数,1,2,3,4,5这种。其中1表示授信通过,4表示授信拒绝。2.case的两种写法case一般有两种写法: 简单case函数和case搜索函数。简单case函数的写法如下case basicinfo_credit_status when 1 then "pa原创 2021-06-03 16:31:54 · 4265 阅读 · 0 评论 -
hive get_json_object json_tuple json解析详解
1.hive中处理json的两个函数json是常见的数据接口形式,实际中使用也很广泛,下面我们看看怎么在hive中解析json格式。hive中常用的解析json格式的函数有两个:先看看get_json_object> desc function extended get_json_object;+---------------------------------------------------------------------------------------------------原创 2021-03-03 15:58:38 · 6276 阅读 · 0 评论 -
hive sql 13位毫秒时间戳转日期
hive sql 中有时间戳转日期的函数from_unixtime(BIGINT unixtime [, STRING format])这里面的unixtime,输入单位是秒,也就一个十位的BIGINT。但是我们实际中用的时间戳,一般都是13位的到毫秒时间戳,如果直接将该时间戳输入方法中会有错误。如果是13位时间戳,可以这么使用from_unixtime(cast(timestamp/1000 as bigint)) as xxx_timetimestamp/1000 是一个double类型,直原创 2020-12-18 12:18:57 · 8544 阅读 · 0 评论 -
hive窗口函数实战(2)
1.什么是窗口函数在明白窗口函数的用途之前,我们先稍微提一下聚合函数,比如sum, count等常用的聚合函数,作用是将一列中多行的值合并为一行。与之对应的是,窗口函数完成的功能是本行内运算,从而多行的运算结果,即每一行的结果对应的多行的结果。一般窗口函数的语法为function() over (partition by column1, column2 order by column3)...原创 2020-04-08 17:50:26 · 1042 阅读 · 0 评论 -
hive collect_set mysql group_concat
1.hive中collect_set用法hive表有两列,其中一列为id,另外一列为channel。现在想把相同id的channel聚合到一块并去重。比如表中如下数据id1 c1id2 c2id1 c2id1 c1id1 c3id1 c3id2 c4输出结果如下id1 c1,c2,c3id2 c2,c4用collect_set函数可以满足上面的要求select id, ...原创 2019-09-30 18:07:59 · 2092 阅读 · 0 评论 -
hive中的集合操作函数
map类型大小:sizearray类型大小:size判断元素数组是否包含元素:array_contains获取map中所有value集合获取map中所有key集合数组排序原创 2018-01-18 10:26:46 · 7070 阅读 · 0 评论 -
hive 正则表达式详解
hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个hive正则表达式的小结。所有代码都经过亲测,正常运行。1.regexp语法: A REGEXP B 操作类型: strings 描述: 功能与RLIKE相同select count(*) from olap_b_dw_hotelorder_f where create_date_wid not regexp原创 2016-04-09 18:56:22 · 95074 阅读 · 1 评论 -
hive lateral view 与 explode详解
1.explodehive wiki对于expolde的解释如下:explode() takes in an array (or a map) as an input and outputs the elements of the array (map) as separate rows. UDTFs can be used in the SELECT expression list and as原创 2016-07-16 21:28:14 · 171574 阅读 · 2 评论 -
hive多行变一行
1.需求描述在数据处理过程中,我们不光要将一行变为多行,有时候还需要将多行变为一行。 有如下格式的数据: msgid appid 1490549504092 1002496 1490549504092 1002505 1490549504105 1005565 1490549504105 1002496 我们可能需要将相同的msgid对应的不同的appid汇聚到一起。怎么完成这个任务呢原创 2017-03-31 17:38:17 · 9154 阅读 · 1 评论 -
一条拼了40min的hql引发的思考
周末加班,拼一条hql花了40min,里面有许多小细节,特别记录下来方便以后使用。1.表结构hive表里存的是个thrift结构。我们关注的主要字段如下:struct UploadDataItem {1:optional string channel;2:optional string data;...}struct UploadData {1:required list<UploadDa原创 2017-03-19 15:17:43 · 1829 阅读 · 0 评论 -
hive partition 分区详解二
hive建分区表create external table if not exists cheap_hotel_user(device string, booking_freq int, book_price string)partitioned by (day string)row format delimited fields terminated by '\t'locatio原创 2016-03-19 23:24:44 · 7004 阅读 · 0 评论 -
hive partition 分区详解一
一.查看分区命令1.show partitions xxxhive> show partitions xxx;OKday=20150908day=20151020day=20151021day=20151022...day=20160318Time taken: 0.139 seconds, Fetched: 144 row(s)由此可见上述命令显示了基原创 2016-03-19 22:42:40 · 31854 阅读 · 0 评论 -
hive 复合结构Map、Struct详解
Map详解hive里支持map的结构如下:(key1, value1, key2, value2, ...) Creates a map with the given key/value pairs建表语句:create table test_map(name string, score map)ROW FORMAT DELIMITEDFIELDS TERMINAT原创 2016-03-22 19:33:51 · 12580 阅读 · 4 评论 -
hive udf开发超详细手把手教程
关于hive的udf介绍,就不多啰嗦了。网上的教程一抓一大把,也可以上apache的官网去查阅相关资料,我就省了翻译的时间了。重点给大家带来干货,手把手教会你怎样开发一个udf函数,已经如何部署到服务器上的hive环境中运行。用最简单的话来说,就是教大家怎么让自己开发的udf跑起来。。。项目需求做数据挖掘项目中,常见的需求之一就是分析节假日订单跟平时订单的区别。于是,我们需要统计节假日订单的分布情况原创 2016-04-26 11:46:34 · 41705 阅读 · 3 评论 -
hive like与rlike的区别
like与rlike的区别:like不是正则,而是通配符。这个通配符可以看一下SQL的标准,例如%代表任意多个字符。rlike是正则,正则的写法与java一样。'\'需要使用'\\',例如'\w'需要使用'\\w'hive> select "aaaaa" like "%aaa%" from test_struct limit 10;Total jobs = 1...OK原创 2016-03-28 14:55:31 · 83836 阅读 · 0 评论 -
hive表加载数据的不同方式
1.建表时候指定location如果数据在hdfs上存好,并且是结构化的数据。最常见的就是按天增量的结构化的日志或者计算结果,此时这部门数据基本不用后期维护,只需要后台程序每天正常运行。这样,在建表的时候直接用location指定即可。create external table rpt_search_flow_experiment(date_num String,flowId string,pvl原创 2016-04-27 14:50:56 · 2658 阅读 · 0 评论 -
hive 时间函数 总结
做数据挖掘的,离不开使用各种时间函数。 为了避免遗忘,以及后续各种抓瞎到处乱找,特意总结了hive中大部分常用的时间函数,方便自己也方便他们。1.unix_timestamp()返回当前时区的unix时间戳 返回类型:bigint hive (tmp)> select unix_timestamp() from hive_sum limit 1; 14658750162.from_unixt原创 2016-06-14 13:05:49 · 45899 阅读 · 2 评论 -
hive join 数据倾斜 真实案例
hive或者MR处理数据,不怕数据量大,就怕倾斜。本博主就遇到了一个真实案例,特意记录下来,有需要的同学可以参考1.查了5个小时还没结束的sql语句set mapred.reduce.tasks = 30;insert overwrite directory 'xxx'selectcus.idA,cus.name,addr.bb from tableA as cusjoin tableB a原创 2016-06-16 19:14:02 · 13653 阅读 · 8 评论 -
hive基本命令
建表语句,表中有map结构:hive> create table test_score(name string, score map)ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'COLLECTION ITEMS TERMINATED BY ','MAP KEYS TERMINATED BY ':'建分区表:hive>原创 2016-03-22 19:30:13 · 933 阅读 · 0 评论 -
hive order by sort by distribute by总结
mysql中有order by函数,而且是使用频率相当高的一个函数。之前看过一个数据,说计算机25%的工作量都用在排序上面(数据的真伪性没有考证)。从这也就不难看出为什么数据库里order by的操作这么重要了。hive中除了order by以外,还有sort by。这两有什么区别,跟mysql里的order by又有些什么不同,本博主结合实际使用场景,跟大家稍微絮叨絮叨。1.order by的使用原创 2016-06-16 20:56:45 · 11789 阅读 · 0 评论 -
hive 窗口函数 应用场景与实战详解
hive中的窗口函数,功能非常强大,使用也比较方便,可以给我们的查询提供相当多的遍历。下面就结合具体的需求与实例,一一为大家讲解窗口函数的使用方法。1.数据准备先在hive数据库中建一张表,表的结构如下:hive (tmp)> desc phone_test;OKcalling_num stringcalled_num string准备测试文件原创 2016-06-23 18:40:31 · 3561 阅读 · 0 评论 -
关于Hive数据仓库的那些事儿(一)模式设计
作者李程,北京市种子管理站站长,人称李站长,友盟数据平台Hive数据仓库扛把子工程师。数据仓库的起源可以追溯到计算机与信息系统发展的初期。它是信息技术长期复杂演化的产物,并且直到今天这种演化仍然在继续进行着。而数据仓库容易让人糊涂的地方在于它是一种体系结构,而不是一种技术。这点使得许多技术人员和风投都感到沮丧,因为他们希望的是打好成包的专业技术,而非具有哲学意义的体系架构。 本系列旨在于讲述Hiv转载 2016-11-29 22:57:39 · 4946 阅读 · 0 评论 -
hive应用实例 将查询结果写入原表中
实例:hive> select * from zzz;OKleilei 18lucy 19xiaoqi 20xxxx 21yyyy 22hive> insert overwrite table zzz > select * from zzz > where age >20;hive客户端输原创 2016-03-16 16:03:27 · 1920 阅读 · 0 评论