首页 > 其他分享 >【HIVE系列】01-HIVE 常用操作

【HIVE系列】01-HIVE 常用操作

时间:2023-08-13 17:57:18浏览次数:39  
标签:10 01 系列 -- 08 HIVE concat select

title: 【HIVE系列】01-HIVE 常用操作
date: 2018-11-13 20:20:31
update: 2018-11-15 17:10:43
categories:
- 大数据技术
- hive
tags: [hive]

参考资料:
https://blog.csdn.net/wisgood/article/details/17376393
http://ju.outofmemory.cn/entry/176408

1. 数据库操作(增删改查)

1.1. 创建表

create table page_view  (  
    page_id bigint comment '页面ID',  
    page_name string comment '页面名称',  
    page_url string comment '页面URL'  
)  
comment '页面视图'  
partitioned by (ds string comment '当前时间,用于分区字段')  
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' 
stored as rcfile  
location '/user/hive/test';  

1.2. 数据加载与插入

1.2.1. 文件导入数据

hive> load data local inpath 'xiong.txt' into table table_name;

1.2.2. 其他表导入

create table table_name as
select * from a left join b on a.1=b.1

2. 字符类型转换

Hive也包括 隐式转换(implicit conversions)和显式转换(explicitly conversions)。

  Hive在需要的时候将会对numeric类型的数据进行隐式转换。比如我们对两个不同数据类型的数字进行比较,假如一个数据类型是INT型,另一个 是SMALLINT类型,那么SMALLINT类型的数据将会被隐式转换地转换为INT类型,这个到底和Java中的一样;但是我们不能隐式地将一个INT类型的数据转换成SMALLINT或TINYINT类型的数据,这将会返回错误,除非你使用了CAST操作。

  任何整数类型都可以隐式地转换成一个范围更大的类型。TINYINT,SMALLINT,INT,BIGINT,FLOAT和STRING都可以隐式 地转换成DOUBLE;是的你没看出,STRING也可以隐式地转换成DOUBLE!但是BOOLEAN类型不能转换为其他任何数据类型!

我们可以用CAST来显式的将一个类型的数据转换成另一个数据类型。

3. 字符串操作

3.1. 文本替换

regexp_replace('2016-06-05 00:00:00.0', '-', '')  --第二个参数为正则表达式
translate(description,'\\t','')         --

3.2. 字符串拼接

3.2.1. 拼接函数

concat(STRING|BINARY a, STRING|BINARY b…)

select concat('abc','def','gh',123)
abcdefgh123  

concat_ws(STRING sep, STRING a, STRING b…) concat_ws(STRING sep, Array)

和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator)

语法:concat_ws(separator, str1, str2, …)

说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

select concat_ws('abc','def','gh')
defabcgh

3.2.2. 分组拼接

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

select userid,bankid,group_concat(cast(creditlimit as string))
from vdm_fin.cc_user_bill_0724
group by userid,bankid
limit 100;

concat_ws('|', collect_set(str))

hive 实现相同功能(只返回不重复的值):

SELECT id,
concat_ws('|', collect_set(str)) 
FROM t  
GROUP BY id; 

3.3. 字符串补全

3.3.1.

4. 时间计算

4.1. 获取当前时间及格式转换

from_unixtime(bigint unixtime[, string format])
select from_unixtime(unix_timestamp())   --获取当前时间
select from_unixtime(unix_timestamp(), 'yyyyMMdd HH:mm:ss')   --获取当前时间,限定格式 
select from_unixtime(unix_timestamp('2013-01-01 10:10:10'), 'yyyyMMdd')  --转换格式
select from_unixtime(unix_timestamp('2013-01-01', 'yyyy-MM-dd'), 'yyyyMMdd') 
select to_date(’2011-12-08 10:03:01′) from dual;    --转成日期格式
2011-12-08

-- 获取年月日
select year(’2011-12-08 10:03:01′) from dual;
2011
select month(’2011-08-08′) from dual; 
8
select day(’2011-12-08 10:03:01′) from dual;
10
--获取时分秒
select hour(’2011-12-08 10:03:01′) from dual; 
8
select minute(’2011-12-08 10:03:01′) from dual;
3
select second(’2011-12-08 10:03:01′) from dual; 
1
-- 获取周数
select weekofyear(’2011-12-08 10:03:01′) from dual;
49

4.2. 日期运算

--日期比较函数: datediff
--语法: datediff(string enddate, string startdate)
--返回值: int
--说明:返回结束日期减去开始日期的天数。
select datediff('2012-12-08','2012-05-09') ;
213

--日期增加函数: date_add
--语法: date_add(string startdate, int days)
--返回值: string
--说明:返回开始日期startdate增加days天后的日期。
select date_add('2012-12-08',10);
2012-12-18

--日期减少函数: date_sub
--语法: date_sub (string startdate, int days)
--返回值: string
--说明:返回开始日期startdate减少days天后的日期。
select date_sub('2012-12-08',10);
2012-11-28

4.3. 计算时间差

-- 方法一:时间戳的差值直接按照单位换算
select  post_date, gqdate, 
(unix_timestamp(post_date) - unix_timestamp(gqdate))/60  diff_min,
(unix_timestamp(post_date) - unix_timestamp(gqdate))  diff_second
from testdata limit 10;

-- 方法二:计算小时差
(hour(from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss'))-hour(create_time)+(datediff(from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss'), create_time))*24) as hour_dValue 

--计算日期差
datediff(date1, date2) 

4.4. 时间加减

5. 数值处理

5.1. 保留小数

5.2. 取整函数

5.2.1. 四舍五入取整 round

round(double a)
返回值: BIGINT
说明:返回double类型的整数值部分(遵循四舍五入)

select round(3.1415926);
3
hive> select round(3.5);
4

5.2.2. 向下取整 floor

select floor(3.1415926);
3

5.2.3. 向上取整函数: ceil/ceiling

hive> select ceil(3.1415926) from lxw_dual;
4
hive> select ceiling(3.1415926) from lxw_dual;
4

5.3. 指定精度

5.3.1. round(double a, int d)

注:发现小数位用round(col1,2)在hue不起作用

5.3.2. 强制转换 cast

小数位: CAST(zl_30 AS DECIMAL(20,2))

5.3.3. 保留固定位数的精度转换

format_number(3.4, 2)  
> 3.40(String)

标签:10,01,系列,--,08,HIVE,concat,select
From: https://www.cnblogs.com/iceyCSE/p/17626881.html

相关文章

  • 【web_逆向01】环境安装
    node.js环境安装官网下载,直接下一步就行安装后,在cmd环境,测试pycharm运行js代码安装node.js插件,安装后记得重启pycharm即可python调用js代码运行,pyexecjs模块pipinstallpyexecjs使用importexecjs#请注意,安装的是pyexecjs.使用的是execjs##1.直接执......
  • 关于hive的字段注释乱码解决
    今天我发现我的DBeaver执行完sql后,表的注释乱码,深究下来是要去设置hive的编码,要不注释是乱码。教程:hive设置中文编码格式utf-8_hive建表指定字符集_2021xyz666的博客-CSDN博客......
  • Python文件路径解谜:深入剖析os.path系列函数的精髓
    介绍在Python中,os.path模块提供了一系列用于处理文件路径和文件系统的函数。它是Python标准库中os模块的一部分。本文将深入探讨os.path系列函数的使用方法,从入门到精通。目录导入os.path模块获取文件路径信息os.path.abspath():获取绝对路径os.path.dirname():获取目录......
  • hive如何提高查询性能
    本文会通过四个方面介绍Hive性能调优,主要包括:√性能调优工具√设计优化策略√数据存储优化√作业优化技巧1.合并中间表一个日志文件中,每一行记录,会有很多很多字段,四五十个字段很正常。实际分析中,常常使用少数几个字段将原始的表中数据,依据业务需求提取出要分析的字段,数据放......
  • mysql在开启group_replication后,状态显示为RECOVERING,告警日志报错MY-013117、MY-0115
    问题描述:mysql在开启group_replication后,状态显示为RECOVERING,告警日志报错MY-013117、MY-011582、MY-011583,如下所示:数据库:MySQL8.0.27系统:rhel7.364位1、问题重现Slave02[(none)]>select*fromperformance_schema.replication_group_members;+-----------------------......
  • NodeJS系列(9)- Next.js 框架 (二)
    在“NodeJS系列(8)-Next.js框架(一)”里,我们简单介绍了Next.js的安装配置,创建了nextjs-demo项目,讲解和演示了Next.js项目的运行、路由(Routing)、页面布局(Layout)等内容。本文继续在nextjs-demo项目基础上,讲解和演示国际化(i18n)、中间件(Middleware)等内容。NextJS:h......
  • 基于C#的无边框窗体阴影绘制方案 - 开源研究系列文章
    今天介绍无边框窗体阴影绘制的内容。      上次有介绍使用双窗体的方法来显示阴影,这次介绍使用API函数来进行绘制。这里使用的是WindowsAPI函数,操作系统的窗体也是用的这个来进行的绘制。1、项目目录;下面是项目目录; 2、函数介绍;这里使用......
  • 【Quarkus技术系列】打造基于Quarkus的云原生微服务框架实践(1)
    推荐超值课程:点击获取前提介绍本系列文章主要讲解如何基于Quarkus技术搭建和开发"专为Kubernetes而优化的Java微服务框架"的入门和实践,你将会学习到如何搭建Quarkus微服务脚环境及脚手架,开发Quarkus的端点服务,系统和应用层级的配置介绍与Quarkus的编程模型分析,创建Quarkus的应用......
  • 【Quarkus技术系列】「云原生架构体系」在云原生时代下的Java“拯救者”是Quarkus,那云
    推荐超值课程:点击获取云原生时代下的Java"拯救者"在云原生时代,其实Java程序是有很大的劣势的,以最流行的springboot/springcloud微服务框架为例,启动一个已经优化好,很多bean需要lazyload的application至少需要3-4秒时间,内存需要几百M,业务逻辑稍微复杂一点点,没有1G以上的内存是......
  • 【专题】中国职业教育发展报告(2012-2022年)报告PDF合集分享(附原数据表)
    学习能力是将知识资源转化为知识资本的能力。它包括对所学内容的兴趣和热情,有助于更深入理解和掌握知识,提高个人的认知和思维能力。阅读原文,获取专题报告合集全文,解锁文末158份学习教育行业相关报告。教育和娱乐支出越来越成为家庭消费的重要组成部分。这包括对18岁以下儿童的素质......