![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
我家小宝_朱朱
这个作者很懒,什么都没留下…
展开
-
spark对库,表操作
-- 删除库drop database if exists db_name;-- 强制删除库drop database if exists db_name cascade;-- 删除表drop table if exists employee;-- 清空表truncate table employee;-- 清空表,第二种方式insert overwrite table employee select * from employee where 1=0;-- 删除分区...原创 2022-01-19 18:40:49 · 3845 阅读 · 0 评论 -
presto字符串转浮点数、整数处理
1. 相除保留小数位Presto中两个整数相除会结果为零。当我们相除的两个数都为整数时,比如我想用两个count()结果相除,想保留n为小数select count(*)*1.00 / count(*) from student;结果就会自动保留两位小数,想要n位就1.后面n个零2. 字符串转整数select cast (bj_score as bigint), bj_score from dcs_input_tab_bj_score3. 字符串转浮点select cast转载 2022-01-10 20:55:42 · 10554 阅读 · 0 评论 -
多行转换多列:使用str_to_map 或者 case when
方法一:利用str_to_map函数with instute_temp3_result_1 as ( select t4.instun_name, str_to_map( concat_ws( '&', collect_set( concat_ws('=', t4.auth_result, t4.auth_result_count) ) ), '&',转载 2021-12-16 19:28:37 · 532 阅读 · 0 评论 -
presto时间转换、时间加减、时间差
问题1:时间格式转换例子: 当前时间20200110 转化为2020-01-10--prestoselect (format_datetime(date_parse('20200110','%Y%m%d'),'yyyy-MM-dd')问题2: 时间的加减例子: 原时间为20200110 需先转化为标准日期形式再加减--prestoselect date_add('day',-6,cast('2020-07-07' as date)); --第三个参数不转换为date格式, 会报错转载 2021-11-30 19:19:16 · 17466 阅读 · 0 评论 -
hive的collect_set在presto中的替代
Hive: collect_set 转为数组并去重,concat_ws 将数组用逗号间隔连接成字符串select user_id , concat_ws(',', collect_set(order_id)) as order_idsfrom tmp.tmp_row_to_colwhere 1 = 1group by user_id ;Presto: array_agg 转为数组,array_distinct 去重,array_join 将数组用逗号间隔连接成字符串sele..转载 2021-11-30 19:07:32 · 3129 阅读 · 0 评论 -
翻页:spark+presto
spart 和 presto 都可以方法一:Hive 提供了类似 Oracle 的 rownum 机制,类似这样(效率比较差):select * from (select row_number() over (order by create_time desc) as rownum,u.* from user u) mm where mm.rownum between 10 and 15;between 和 and 分页可以按照下面这个公式 between :( currentPage-转载 2021-11-30 18:28:20 · 231 阅读 · 0 评论 -
hive: 替换translate
替换translateeg:select translate('Asher117','Asher','Viva')>Viva117原创 2021-07-28 11:54:51 · 362 阅读 · 0 评论 -
hive 实现将多行记录合并成一行:concat_ws,collect_set,collect_list
数据表的记录如下5112 9600245112 9600255112 9600265112 9600275112 9600285113 9600435113 9600445113 9600455113 960046select product_id, concat_ws('_',collect_set(promotion_id)) as promotion_ids from product_promotion group by product_id执行结果: 5112 9转载 2021-05-26 19:15:56 · 4400 阅读 · 0 评论 -
Hive将一行记录拆分成多行或者多列
hive表test_user_browse记录了用户浏览过的商品,该表的数据如下:username productJohn product_a,product_b,product_c,product_dTom product_e,product_f现在,想要将product字段拆分为多行。实现方式现在借助lateral view 和explode()来完成。select username, browse_productfrom pms.te...转载 2021-05-26 14:53:26 · 9371 阅读 · 0 评论 -
4.sparksql:函数使用:字符串查找函数 instr和locate
找不到都是返回0字符串查找函数: instr语法: instr(string str, string substr)返回值: int说明:返回字符串 substr 在 str 中首次出现的位置举例:hive> select instr('abcdf','df') from test;OK4字符串查找函数:locate语法: locate(string substr, string str[, int pos])返回值: int说明:返回字符串 substr 在 str.转载 2021-05-17 19:22:35 · 5122 阅读 · 0 评论 -
3.sparksql:函数使用:实现累加和累乘
Hive分析窗口函数(一) SUM,AVG,MIN,MAX 用于实现分组内所有和连续累积的统计,实现累加和累乘https://blog.csdn.net/abc200941410128/article/details/78408942数据准备:CREATE EXTERNAL TABLE lxw1234 ( cookieid string, createtime string, --day pv INT ) ROW FORMAT DELIMITED FIELDS TE转载 2021-05-17 19:20:38 · 1615 阅读 · 0 评论 -
HIVE正则(like、rlike、regexp、regexp_replace、regexp_extract)
https://blog.csdn.net/Kikitious_Du/article/details/91441639LIKE语法1: A LIKE B 语法2: LIKE(A, B)操作类型: strings返回类型: boolean或null描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合表达式B的正则语法,则为TRUE;否则为FALSE。B中字符"_"表示任意单个字符,而字符"%"表示任意数量的字符。hive> select 'footba..转载 2021-01-21 20:49:32 · 724 阅读 · 0 评论 -
Java使用JDBC连接Impala
https://blog.csdn.net/huangzhilin2015/article/details/91577602一、下载驱动到官网下载对应版本的Impala JDBC Connector,我这里下载的是2.6.12版本,若有需要,可自行选择版本:https://www.cloudera.com/downloads/connectors/impala/jdbc/2-6-12.html注:官网下载需要填写用户信息,要方便的话这里直接给出2.6.12版本的百度网盘分享地址:链转载 2020-11-14 17:50:02 · 790 阅读 · 0 评论 -
2 sparksql 函数:str_to_map,case when,get_json_object
字段映射处理,两种方式:str_to_map, case whenselect case substr(idcard,1,2) when '11' then '北京' when '33' then '浙江' when '46' then '海南' when '65' then '新疆' when '12' then '天津' when '3...原创 2020-06-18 16:34:03 · 1550 阅读 · 0 评论 -
hive时间操作函数:获取小时差.天数差等
https://blog.csdn.net/wrty1993/article/details/785483121.首先hive获取当前时间的函数与sql 不一样sql是:now();(1) hive有一个获得当前时区的UNIX时间戳:unix_timestamp语法: unix_timestamp()返回值: bigint说明: 获得当前时区的UNIX时间戳举例:hive>...转载 2020-05-05 19:15:18 · 13089 阅读 · 0 评论 -
sql 判断两个时间段是否有重合,是否存在交集
https://blog.csdn.net/qq_33896101/article/details/82012300总结起来就一句话:最小值小于最大值并且最大值大于最小值,则一定重叠。我的使用场景: A 表 将时间有交叉的数据查出来我的算法:start_time,end_time 1> and 2>1> 剔除完全相同 a1.start_time<&...转载 2020-05-05 17:35:09 · 5303 阅读 · 2 评论 -
sql中where和having的区别
https://segmentfault.com/a/1190000008284099https://juejin.im/post/5c052cb5f265da6120619545误区:不要错误的认为having和group by 必须配合使用。下面以一个例子来具体的讲解:1. where和having都可以使用的场景selectgoods_price,goods_na...转载 2020-05-05 16:16:14 · 255 阅读 · 0 评论 -
sparksql :关系运算
=,!=,<> >= ,<=,>,<比较时最好用cast 转换成相同类型后比较注意1:cast(数字 as 字符串),如果表中字段是double类型,转成字符串会多.0尽量将字符串转成数字型注意2:语法: A >= B=,!=,<> >= ,<=,>,<操作类型: 所有基本类型...转载 2020-02-03 17:54:57 · 3146 阅读 · 0 评论 -
1. sparksql:函数使用:concat_ws,collect_set,RANK, DENSE_RANK, ROW_NUMBER
concat_ws: 用指定的字符连接字符串例如:连接字符串:concat_ws("_", field1, field2),输出结果将会是:“field1_field2”。数组元素连接:concat_ws("_", [a,b,c]),输出结果将会是:"a_b_c"。collect_set: 把聚合的数据组合成一个数组,一般搭配group by 使用。例如有下表T_...转载 2020-02-03 16:25:43 · 882 阅读 · 0 评论 -
sparksql : 数据库表连接的简单解释
表的连接分成好几种类型。内连接(inner join) 外连接(outer join) 左连接(left join) 右连接(right join) 全连接(full join)只返回两张表匹配的记录,这叫内连接(inner join)。 返回匹配的记录,以及表 A 多余的记录,这叫左连接(left join)。 返回匹配的记录,以及表 B 多余的记录,这叫右连接(righ...转载 2020-02-03 16:15:52 · 1481 阅读 · 0 评论 -
sparksql:去重row_number,生成排序序号 :RANK, DENSE_RANK, ROW_NUMBER的区别
https://blog.csdn.net/qq_39869388/article/details/80422472去重:select date,phone from (select *,row_number() over (partition by phone order by date) num from tmp_table1) t where t.num=1第一步:select ...原创 2020-02-03 16:06:06 · 3578 阅读 · 0 评论