
hive
周小科
这个作者很懒,什么都没留下…
展开
-
复杂sql-按【地点】变化分组(【地点停留】时长问题)
示例数据如下: 序号 时间 地点 1 9:00 A 2 9:01 A 3 9:03 A 4 9:04 B 5 9:09 A 要原创 2021-07-12 17:21:34 · 391 阅读 · 0 评论 -
复杂sql-按【连续时间】分组(连续【登录】天数问题)
本文基于hive1.1.0-cdh5.12.1示例数据如下: userid date a 2021-01-01 a 2021-01-02 a 2021-01-03 a 2021-01-05 a 2021-01-06 b 20原创 2021-06-28 10:04:12 · 665 阅读 · 0 评论 -
sql技巧-滚动窗口分组
本文基于hive1.1.0-cdh5.12.1将数据按N个一组进行分组示例数据: id 0 1 2 3 4 6 7 要求:将id按一个长度为N的滚动窗口分组(N>1),并求出窗口区间(前闭后开)参考结果:N=3 id 分组 窗口区间 0原创 2021-06-21 17:13:04 · 595 阅读 · 0 评论 -
sql技巧-产生连续日期(时间)序列
要求:通过sql生成一段连续的日期,入2021-01-01至2021-01-31参考实现:d原创 2021-06-10 09:45:31 · 5564 阅读 · 1 评论 -
hive几种判断字符串开头的方法对比
select count(*) from tds_sk_his t where dt='2020-10-27' and user_num like '0086%'; --50.508 secondsselect count(*) from tds_sk_his t where dt='2020-10-27' and user_num rlike '^0086'; --46.483 secondsselect count(*) from tds_sk_his t where dt=...原创 2020-10-28 11:39:30 · 12185 阅读 · 0 评论 -
HIVE自定义UDAF中将部分结果汇总时需要注意的一个地方
最近有些了一个UDAF,在调试时,遇到了一些奇怪的现象,明明逻辑正确,却总是得不到预期的结果。而且测试环境正确,但是放到生产环境的不正确。通过对应中间变量日志,看到以下数据:以上是map的日志输出,可以看到,两次输入的value数组,在第四行的oprations(中间缓存变量)时,变成了两个一模一样的数组。这是一个典型的引用变量问题。观察代码如下:private ArrayList&...原创 2020-04-01 14:37:29 · 331 阅读 · 0 评论 -
hive查询元数据得到表及字段结构注释
--hive查询元数据得到表及字段结构注释SELECT DBS.DB_ID,DBS.NAME,TBL_ID,TBL_NAME,COLUMNS_V2.CD_ID,COLUMNS_V2.COMMENT,INTEGER_IDXfrom TBLSLEFT join DBSon TBLS.DB_ID=DBS.DB_IDleft join SDSon TBLS.SD_ID=SDS.SD_ID...原创 2020-03-24 11:57:04 · 8730 阅读 · 0 评论 -
HIVE在UDAF中使用TreeMap的问题
由于业务需要,编写了一个自定义的聚合函数,实现一个自定义的累加器。因为其中vlues需要排序,所以就使用了一个TreeMap,根据模板及《hadoop权威指南》中的说明,merge()方法,接受一个对象作为输入。这个对象的类型必须和terminatePartial()方法的返回类型一致。我的代码片段如下:private TreeMap<Long,ArrayList<Lon...原创 2019-11-22 18:16:09 · 359 阅读 · 0 评论 -
hive on spark 内存溢出
前端时间用hive改写了一个java mapreduce查询,由于用到了grouping sets,组合比较多,同时数据也比较大(每天1700万左右),需要对当月进行统计。每到下半月时,reduce阶段就经常报内存溢出错误。错误信息如下Reducer preempted to make room for pending map attempts Container killed by the...原创 2019-07-31 19:01:06 · 1752 阅读 · 0 评论 -
关于hive中的with as 语法
网络上搜索到的结果,都是说with as可以有缓存数据,减少表扫描,优化速度的作业,其实并不是这样,以下通过实验分析和证明写一个很简单的语句:with t as(select regexp_replace(reflect("java.util.UUID", "randomUUID"), "-", "") AS id --生成一个随机id,'andy' as name) selec...原创 2019-06-20 15:42:20 · 7706 阅读 · 4 评论 -
使用欧元符号€作为hive表的分割符
现有一份数据,是使用欧元符€作为分隔符,现在想要将数据加载到hive中。普通的 row format delimited FIELDS TERMINATED BY '€' 并不行,百度找到一篇博客,说使用 -128作为分隔符,也不行。解决这个问题,需要使用到org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe这个类。这个类常用于...原创 2019-04-03 20:12:16 · 2732 阅读 · 2 评论 -
hive on spark 修改application name
基于spark引擎的hive,在hive客户端中提交查询sql后,在yarn管理界面,或者8088界面,看到的作业名称都是"hive on spark",如下图所示,如果有多个脚本同时在运行时,就不好分辨。如果是基于mapreduce引擎的,可以通过设置mapred.job.name参数来实现(笔者未验证)。而基于spark引擎的,需要设置spark.app.name。hive...原创 2019-04-08 12:56:31 · 2836 阅读 · 0 评论