数据库
小小白要努力成长啊
这个作者很懒,什么都没留下…
展开
-
hiveSQL之json多层嵌套解析的方法
SELECT id ,get_json_object(get_json_object(operate_content,'$.finishTime'),'$.n') ,get_json_object(operate_content,'$.finishTime.n') FROM dw.dw_plat_sinan_ticket_operate_record_da WHERE pt='20200730000000' and id='1112167'原创 2020-07-31 17:01:13 · 3298 阅读 · 0 评论 -
hive 之sort by和order by
sort by和order by 其实都是用来排序的。 order by 可以得到一个全局的排序的一个结果 如果sort by的reducer的数量为1的话 实际上得到的结果和order by是相同的。 大多数时候用order by其实没什么问题,但是当数据量非常大时,order by的开销实际上就非常大了,做不到全局排需的效果,然后sort by就可以出场了。 但是sort by 实际上是再每一个reducer中排序,得到实际上是一个局部有序的结果,要想得到全局的结果还需要处理一下。 但是我们有时候希望将原创 2020-06-11 16:09:36 · 1556 阅读 · 0 评论 -
sql优化之not in
今天做一个全量表改增量表的工作: 想找b表不在a表的那部分数据 自然而然想到的就是not in 但是实在是太慢了 搜索了可以优化的方案 not exists select * from t where not exists (select null from t t2 where t2.y=t.x ) IN和Exists的区别 简单来说,前者是非相关子查询,子查询先执行,且只执行一次,执行完毕后将值传递给外层查询;后者是相关子查询,将外层查询的一个元组传递给内层查询,然后执行内层查询,外层查询根据返回的结原创 2020-06-05 18:01:26 · 542 阅读 · 0 评论 -
hive之join
hive支持sql join 语句但是只支持等值连接,并且还不支持在on字句中的谓词间使用or 有左外连接右外连接内连接全连接笛卡尔积 比较特殊的还有left semi-join(左半开连接) 左半开连接可以返回左边表的记录 前提是右边表满足on语句的判定条件 https://www.cnblogs.com/wqbin/p/11023008.html 这里还有需要注意的一个点 map-side join 如果所有表里面只有一个是小表,那么可以在最大的表通过mapper的时候将小表完全放入内存中,hive可以原创 2020-06-03 13:30:15 · 187 阅读 · 0 评论 -
hive踩坑(1)
No partition predicate found for Alias 用户不允许扫描所有的分区,所以不能当sql同等对待原创 2020-06-03 10:14:00 · 326 阅读 · 0 评论 -
hive之表生成函数
表生成函数和聚合函数的感觉是相反的 表生成函数可以把单列扩展到多列 explode 函数 1.explode(array) 可以返回0到多行的结果,每行对应的是array数组中的一个元素。 2.用于map类型数据时 由于map是key-value结构的,所以它在转换的时候会转换成两列,一列是key转换而成的,一列是value转换而成的。 explode(map_col) as (may_key_col, may_value_col) 3.局限性: 不能关联原有的表中的其他字段。 不能与group by、cl原创 2020-05-29 18:38:43 · 276 阅读 · 0 评论 -
hive之nvl函数和coalesce和substr函数
nvl函数: NVL(E1, E2)的功能为:如果E1为NULL,则函数返回E2,否则返回E1本身。 Coalesce函数: 格式如下:Coalesce(expr1, expr2, expr3…… exprn) Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。返回表达式中第一个非空表达式 substr函数: substr(string A, int start, int len),substrin原创 2020-05-29 16:19:20 · 1647 阅读 · 1 评论 -
mysql数据库之查询结果排序
1.条件逻辑 select ename,sal, case when sal <= 2000 then ‘up’ when sal>= 5000 then ‘over’ else ‘ok’ end as status from emp 2.以指定顺序返回查询结果 select ename,job,sal from emp where deptno = 10 order by sal a...原创 2018-12-15 19:23:48 · 1058 阅读 · 0 评论