首页 > 其他分享 >Hive刷题——explode关于数据扩充与收缩

Hive刷题——explode关于数据扩充与收缩

时间:2023-02-07 07:00:08浏览次数:48  
标签:Hive explode num rn desc array select 刷题

有以下数据

select explode(array(2, 3, 4)) num;
结果
num
2
3
4

需求1、数据扩充:

输出结果如下所示:
4    1,4,3,2
3    1,3,2
2    1,2

参考实现

select t.num,concat_ws(',',collect_set(cast(t1.rn as string))) lists
from (select explode(array(2, 3, 4, 5)) num) t
         join
     (select row_number() over () rn
      from (select split(space(4), '') x) t lateral view explode(x) t as pe) t1
     on 1 > 0
where t.num >= t1.rn
group by t.num
order by 1 desc;

需求2、数据扩充时剔除偶数:

期望输出结果
5    4,2
4    4,2
3    2
2    2

参考实现

select num, concat_ws(',', collect_set(cast(rn as string))) list_nmum
from (select *
      from (select explode(array(2, 3, 4,5)) num) t
               join
           (select row_number() over () as rn
            from (select split(space(4), '') as x) t
                     lateral view explode(x) t as pe) b
           on 1 > 0
      where t.num >= b.rn
        and b.rn % 2 = 0
      order by t.num, b.rn desc) t
group by num
order by 1 desc;

标签:Hive,explode,num,rn,desc,array,select,刷题
From: https://www.cnblogs.com/wdh01/p/17073576.html

相关文章

  • 算法刷题 Day 31 | ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
    贪心算法其实就是没有什么规律可言,所以大家了解贪心算法就了解它没有规律的本质就够了。不用花心思去研究其规律,没有思路就立刻看题解。基本贪心的题目有两个极端......
  • 怎样通过explain执行计划,来优化SQL(以hive为例)
    适用场景HiveSQL在执行之前会将SQL转换为MapReduce任务,因此需要了解具体的转换过程。可以通过explain关键字来查看具体的执行计划。通过执行计划能看到SQL程序转换成相应......
  • HIVE的几个使用技巧
    1.小表在前,大表在后,如果表很小就用mapjoin写JOIN的时候,将小表写在JOIN的前面,这样HIVE就会将小表载入内存,然后扫描大表。如果表足够的小,就使用mapjoin。2.设定map的并发数,保......
  • Hive使用TRANSFORM运行Python脚本总结
    1、Python环境设置可以使用addcachearchive的方法把tar.gz添加到分布式缓存,Hive会自动解压压缩包,但是目录名是和压缩包名称一样的;addcachearchive${env:my_workbenc......
  • 把HIVE程序优化30倍的经验
    今天遇到一个HIVE需求,输入只有4列,大概160MB,需要引用一些字典文件,然后输出70列数据;典型的复杂计算,由于HIVE无法单独实现,采用TRANSFORM写了PYTHON脚本实现; 刚开始写完......
  • Hive中Order by和Sort by的区别是什么?
    Hive基于HADOOP来执行分布式程序的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件,这导致了在......
  • 向Hive程序传递变量的三种方法
    ​​​​图1外部向Hive程序中传递变量的方法使用Hive编写程序最常用的方法是将Hive语句写到文件中,然后使用hive-ffilename.hql来批量执行查询语句。经常需要将外部参......
  • Hive的left join、left outer join和left semi join三者的区别
    Hive的Join的文档说明地址:​​​https://cwiki.apache.org/confluence/display/Hive/LanguageManual%2BJoins​​以下为两个测试数据表建表语句:MySQLuse......
  • Hive窗口函数中range和rows的区别
    说明聊到hive,就少不了灵活的开窗函数,今天介绍下开窗函数中over子句内部经常会用到的rows和range的用法;数据准备createtabletemp_id_0116(idint)stor......
  • 算法刷题-移除元素、分数到小数、整数转罗马数字
    移除元素给你一个数组nums_和一个值val,你需要原地移除所有数值等于val_的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原......