hive
左林右李02
mt实时数据平台研发
展开
-
hive搭建和hive metastore、hiveserver2服务启动
hive搭建参见https://dblab.xmu.edu.cn/blog/2440-2/hive metastore服务启动bin/hive --service metastore &启动hiveserver2bin/hive --service hiveserver2 &需要注意的是想要hiveserver2服务可用,需要启动metastore可用原创 2021-01-11 21:44:47 · 733 阅读 · 0 评论 -
获取两个时刻间的所有分钟
SELECT FROM_UNIXTIME(time_long + (number - 1) * 60, 'HH:mm:ss') AS statistic_timeFROM( SELECT UNIX_TIMESTAMP(time_str, 'HH:mm:ss') AS time_long, ROW_NUMBER() OVER(ORDER BY time_str) AS number FROM( SELECT EXPLODE(SPLIT(TRIM(REPEAT(CONCAT('09:00:00原创 2020-08-19 15:33:32 · 165 阅读 · 0 评论 -
hive时间戳和字符串日期转换
timestamp转2020-04-13 00:04:19格式from_unixtime(cast(timestamp/1000 as bigint))timestamp获取hourhour(from_unixtime(cast(timestamp/1000 as bigint)))原创 2020-04-18 23:04:23 · 2018 阅读 · 0 评论 -
hive小文件合并
当Hive输入由很多个小文件组成,由于每个小文件都会启动一个map任务,如果文件过小,以至于map任务启动和初始化的时间大于逻辑处理的时间,会造成资源浪费,甚至OOM。为此,当我们启动一个任务,发现输入数据量小但任务数量多时,需要注意在Map前端进行输入合并当然,在我们向一个表写数据时,也需要注意输出文件大小Map输入合并小文件对应参数:set mapred.max.split.siz...原创 2020-03-12 17:49:09 · 110 阅读 · 0 评论 -
hive可配置变量列表
变量名描述默认值hive.partition.pruning分区裁剪检查,查询分区表时如果不指定分区编译器是否报错(A strict value for this variable indicates that an error is thrown by the compiler in case no partition predicate is provided on a...原创 2020-03-12 17:38:35 · 228 阅读 · 0 评论 -
hive UDAF详解
hive udaf的编写主要用到两个类,GenericUDAFEvaluator(udaf求值器)和AbstractGenericUDAFResolver(udaf分解器)AbstractGenericUDAFResolver的主要作用是获取求值器,类结构如下,GenericUDAFEvaluator的作用是求值,其方法分别对应于mapreduce不同的阶段,类结构如下其中Mode是...原创 2020-03-04 20:33:17 · 528 阅读 · 0 评论 -
left semi join和join实现子查询性能对比
left semi join和join实现子查询性能对比left semi joinhive从 0.13 版本实现了in/exist自查询,实现方式是通过left semi join,left semi jion具体实现是在右表(子查询)中先对on的关键字做group by ,然后再做join操作select a.*from(select brand,store_idfrom d...原创 2020-02-09 19:45:43 · 1262 阅读 · 0 评论 -
hive制作拉链表
制作拉链表step以订单表为例1、 拉取线上mysql订单表以初始化拉链表2、 以后每天仅需要拉取当天创建或者当天更新的数据,放入增量表中3、 拉链表的更新分为两部分part1 增量表中的新增的记录(历史从未出现,即create_time=当天)part2 拉链表left join增量表,获取历史出现当天更新的数据,将历史数据关链insert overwrite order_ch...原创 2020-02-04 17:14:51 · 460 阅读 · 0 评论 -
hive动态分区
通过下面命令开启动态分区set hive.exec.dynamic.partition=true;set hive.exec.dynamic.partition.mode=nonstrict;执行下面语句,需要注意的是,在SELECT子句的最后两个字段,必须对应前面PARTITION (brand,city,site,dt)中指定的分区字段,包括顺序<insert overwrit...原创 2019-12-24 19:49:44 · 169 阅读 · 0 评论