Hive和Impala的行列转换

这篇具有很好参考价值的文章主要介绍了Hive和Impala的行列转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hive

explode+lateral
group by+collect_list

一、列转行 (对某列拆分,形成新列)
使用函数:lateral view explode(split(column, ‘,’)) num
eg: 如表:t_row_to_column_tmp 数据如下,对tag列进行拆分
impala 列转行,Hadoop零碎问题点,hive,数据库,hadoop

select id,tag,tag_new
  from t_row_to_column_tmp
lateral view explode(split(tag, ',')) num as tag_new
where id=212022894;

impala 列转行,Hadoop零碎问题点,hive,数据库,hadoop
二、行转列 (根据主键,对某列进行合并)
使用函数:concat_ws(‘,’,collect_set(column))
说明:collect_list 不去重,collect_set 去重。 column 的数据类型要求是 string
eg:如表:t_column_to_row ,根据id,对tag_new 进行合并
impala 列转行,Hadoop零碎问题点,hive,数据库,hadoop

select id,
         concat_ws(',',collect_set(tag_new)) as tag_col
 from t_column_to_row
group by id;

impala 列转行,Hadoop零碎问题点,hive,数据库,hadoop

select id,
         concat_ws(',',collect_list(tag_new)) as tag_col
 from t_column_to_row
group by id;

impala 列转行,Hadoop零碎问题点,hive,数据库,hadoop

Impala

Impala 不支持 hive COLLECT_SET函数的方式,使用GROUP_CONCAT函数+SPLIT_PART函数替代

## IMPALA
SELECT SCORE,SPLIT_PART(GROUP_CONCAT(NAME),',',1) FROM TEST.STUDENT GROUP BY SCORE 
## HIVE
SELECT SCORE,COLLECT_SET(NAME)[0] FROM TEST.STUDENT GROUP BY SCORE

例子:

select 
	a.zhusulvguan,group_concat(b.peopleid,',') ,group_concat(b.peopleid2,',')
from 
	table_lvguan  a  join table_people b on b.zhusulvguanId = a.zhusulvguanId 
where 
group by a.zhusulvguan

impala 列转行,Hadoop零碎问题点,hive,数据库,hadoop

select 
	a.zhusulvguan,concat(group_concat(b.peopleid,','),',',group_concat(b.peopleid2,',')) peopleidall
from 
	table_lvguan  a  join table_people b on b.zhusulvguanId = a.zhusulvguanId 
where group by a.zhusulvguan

impala 列转行,Hadoop零碎问题点,hive,数据库,hadoop文章来源地址https://www.toymoban.com/news/detail-517485.html

总结:
①group_concat(column[,char])函数:把同组中指定的column放到一行中[通过char连接],并且去重(列名去重,值不去重)。
②既然是同组数据的操作,那么group_concat()就要配合group by使用。特别的,group by 分组依据并不强制要求和group_concat(column)指定的column相同(个数,字段名)。
③concat(column1,‘cahr’,column2):column1和column2的值通过cahr连接后合并

到了这里,关于Hive和Impala的行列转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Impala时间转换to_date、to_timestamp

    在时间的运算上,也常常使用到日期格式的转换,如日期字符串转为日期型,日期转为格式化字符串,是两种常见的需求;另外也有需要将时间转为时间戳的场景等等; 时间数据的转换上,主要用 to_date、to_timestamp ,即可满足日期字符串转为日期型的需求; from_timestamp、fr

    2023年04月25日
    浏览(32)
  • 1、通过亿级数据量在hive和impala中查询比较text、orc和parquet性能表现(二)

    本文通过在hdfs中三种不同数据格式文件存储相同数量的数据,通过hive和impala两种客户端查询进行比较。 本文前提:熟悉hadoop、hive和impala、kafka、flink等,并且其环境都可正常使用。(在后续的专栏中都会将对应的内容补全,目前已经完成了zookeeper和hadoop的部分。) 本文分为

    2024年02月12日
    浏览(49)
  • 成功解决Impala中修改parquet表的字段类型问题

    最近有个小伙伴在开发中遇到了 Impala 中修改 Parquet 表的字段类型问题,于是开启了问题解决之路。 这个小伙伴在 Impala 中对 Hive 的表进行了删除、修改字段类型等操作,等这些操作后去 Impala 去查询该表的时候,出现了如下的问题: 问题1: 问题2:

    2024年02月16日
    浏览(48)
  • 【dbeaver】win环境的kerberos认证和Clouders/cdh集群中Kerberos认证使用Dbeaver连接Hive、Impala和Phoenix

    1.1 下载安装MIT KERBEROS客户端 MIT KERBEROS 下载较新的版本即可。 下载之后一路默认安装即可。 注意:不要修改软件安装位置。 修改系统环境变量中的Path。将刚刚的安装路径置顶。(不置顶,也要比 %JAVA_HOME%bin 和 anaconda 相关的高) 使用CMD命令确认下: 1.2 修改 krb5.conf 文件并

    2024年02月02日
    浏览(52)
  • 【大数据入门核心技术-Impala】(一)Impala简介

    目录 一、Impala介绍 二、Impala优势 三、Impala主要功能         Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程

    2024年02月16日
    浏览(34)
  • Impala与Docker:如何在容器化环境中优化Impala性能

    作者:禅与计算机程序设计艺术 容器技术作为云计算领域的新兴技术,越来越受到各行各业的青睐。容器技术的出现使得应用软件可以轻松部署、扩展和管理;由于容器隔离了应用程序的运行环境,使得其具有更高的资源利用率;同时也方便实现多任务并行处理,提升了系统

    2024年02月07日
    浏览(39)
  • impala元数据自动刷新

    一.操作步骤 进入CM界面 Hive 配置 搜索 启用数据库中的存储通知(英文界面搜索:Enable Stored Notifications in Database),并且勾选,注意一定要勾选,配置后面的配置不生效。数据库通知的保留时间默认为2天,意味着如果事件通知没有更新超过2天事件将会丢失 二.hive配置参数 hive

    2024年01月20日
    浏览(32)
  • 大数据之 impala教程

    一、什么是Impala? Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。 换句话说,Impala是性能最高的SQL引擎(提供类似RDBMS的体验),它提供了访问

    2024年02月15日
    浏览(42)
  • Impala计算日期差datediff

    在数据库查询上,除了获取当前日期、进行日期加减外,常见的还有计算两个日期之后的日期差,为一些指标的计算提供时间基础; Impala中常用的日期差函数 datediff ,就是用来计算两个日期之间的间隔; 使用方式如下: 类似日期差的计算中,还有其他计算时间差的函数,如

    2024年02月11日
    浏览(36)
  • Impala:大数据交互查询工具

    Impala是由Cloudera公司开发的一款开源的大数据交互查询工具,能够对存储在HDFS、HBase上的数据进行快速的交互式SQL查询。Impala可以实现对PB级别的数据的实时分析,其查询速度比基于MapReduce的Hive高出3到90倍。Impala使用了类似于传统的MPP数据库技术,避免了MapReduce引擎的启动开

    2023年04月14日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包