hive求某天是当年第几周形如yyyyww 两者是有差异mysql是从周一作为这周起始时间,hive是从周日作为这周起始时间。mysql有date_format求当年第几周。为了同mysql保持一致需要当前时间减1天。同时hive也有相应的函数。
HIVE生成数字全局唯一键ID 1.row_number() over() (生成全局递增唯一ID)selectrow_number() over() id,afrom test1此方法会产生一个reduce。数据量比较大会产生数据倾斜。2.生成全局唯一数字ID(非递增连续)先将原始数据随机分成101份(可以理解为步长)create table test2asselecta,cast(rand()*100 as bigint) numfrom test1再每份内排序后生成一个唯一IDselect
HIVE列转行注意点 HIVE列转行注意分隔成数组字段不能为null当hive进行列转行需要注意分割成数组不能为null,不然这列就会漏掉。原始数据结果展示对于这样的情况只能用union all将两部分数据合起来selecta,bbfrom testlateral view explode(split(b,’:’)) num as bbwhere b is not nullunion allselecta,b bbfrom testwhere b is null或者用nvl将null转化
HIVE解析JSON数组 HIVE解析JSON数组数据示例:[{“payAmount”:“375000”,“payChannelCode”:“BOC”},{“payAmount”:“376000”,“payChannelCode”:“AOC”}]1.get_json_object函数提取json数组里面特定字段值get_json_object可以提取json数组指标位置的值(跟数组一样)selectget_json_object('[{"payAmount":"375000","payChannelCode":"BOC
hive正则表达式反向引用 反向引用捕获会返回一个捕获组,这个分组是保存在内存中的,不仅可以在正则表达式外部通过程序进行引用,也可以在正则表达式内部进行引用,这种引用方式就是反向引用。根据捕获组的命名规则,反向引用可分为:1.数字编号组反向引用:\k或umber2.命名编号组反向引用:\k或\‘name’捕获组是匹配子表达式的内容按序号或者命名保存起来以便使用,主要是用来查找一些重复的内容或者替换指定字符。J...
SQL16号统计1~15号数据,1号统计上月15~月底数据 由于我司提供的脚本周期只有天,周这种。于是想用周期为天来执行脚本。逻辑如下:selectday,count(*)from testwhere( ‘20191215’ = ‘date’ and day>=‘20191201’ and day<=‘20191215’)or(‘20200101’ = ‘date’ and day>=‘20191215’ and day...
hive存储复杂的json格式 1.hive复合数据类型 ARRAY < data_type > MAP < primitive_type, data_type > STRUCT < col_name : data_type [COMMENT col_comment], ...> 2.json建构于两种结构 “名称/值”对的集合(A collection of name...
使用max函数实现唯一性 原始数据type line amount 1 a 111 b 222 a 1112 b 2221.列转行select type, max(case when line='a' then amount else 0 end ) a, max(case when lin...
hive使用size函数求分割后字符串个数注意点 1.split的字段串是空串(a='')size(split(a,','))=12.split的字段串是null(a is null)size(split(a,','))=-1
hive时间戳转化格式化 1.bigint转化成时间戳 1.1 bigint为13(毫秒级) 1.date_format函数 select date_format(cast(1577379134405 as timestamp),'yyyyMMddHHmmss') 2.from_unixtime函数 select from_unixtime(cast(substr(15773791...
hive实现like模糊配对 testa表(字段a) aaa bba cccddd dddaaatestb表(字段b) a b 1. 使用like+concat模糊配对select a.afrom testa a ,testb bwhere a like concat('%',b.b,'%')group by a.a2. 使用locate函数select a.a...
hive字符串截取 1.根据分割符截取1.1 split函数selectsplit(‘a????️c’,’:’)[0],split(‘a????️c’,’:’)[2]1.2 regexp_extract函数selectregexp_extract(‘a????️c’,’(.)????.)????.)’,1),regexp_extract(‘a????️c’,’(.)????.)????.)’,3)selectregexp_extract(‘a????...
hive除重的几种方法 1.除重不做统计操作1.1使用distinctselectdistncta,bfrom test1.2使用group byselecta,bfrom testgroup bya,b1.3使用分组函数selecta,bfrom(selecta,brow_number() over(partition by a,b) as row_idfrom tes...
Flink数据流类型转换 Flink为流处理和批处理分别提供了DataStream API和DataSet API。在开发工作中都是利用这些API进行程序编程。不同DataStream之间转换从而形成stream图。网上Flink1.4流程转换图有点旧,不过也能说明之间的转换关系。从上面的转换关系可以看出各种不同的流通过operator最后都转换为DataStream。可以从官网查看各个流的转换关系https://ci....
Flink使用BucketingSink自定义多目录写入 由于平台的不稳定性,小时解析日志老是出错需要人为干涉。最近在想能不能通过flink实时解析日志入库。查了一下网上的资料可以使用BucketingSink来将数据写入到HDFS上。于是想根据自定义文件目录来实行多目录写入。添加pom依赖` <dependency> <groupId>org.apache.flink</groupId> ...
kill(杀死)hive进程(job)的2种方法 先去yarn界面查找你要杀死的程序,在最右边ApplicationMaster点进入下面界面方法1.yarn application -kill application_Id方法2.hadoop job -kill job_id
Flink的KeyedStateStore的5中state KeyedStateStore有ValueState,ListState,ReducingState,AggregatingState,MapState5中状态。下面实现这5种状态示例。1.KeyedStateStore接口的所有get方法2.ValueState DataStream<MyType> stream = ...; KeyedStream<MyType...
hive字段类型为bigint但在where条件却用了字符串a!=''导致执行计划和结果有问题 今天写了一段SQL,代码逻辑没有问题,但是结果老是跟实际不符合。于是用explain查了一下执行计划也没有什么问题。于是只能一步一步临时表的查问题。最后定位到where a!=’’。下面是hive支持的隐式类型转换图表hive测试结果:...