
hive
文章平均质量分 53
zxfBdd
这个作者很懒,什么都没留下…
展开
-
Hive- UDF&GenericUDF
hive udf简介在Hive中,用户可以自定义一些函数,用于扩展HiveQL的功能,而这类函数叫做UDF(用户自定义函数)。UDF分为两大类:UDAF(用户自定义聚合函数)和UDTF(用户自定义表生成函数)。在介绍UDAF和UDTF实现之前,我们先在本章介绍简单点的UDF实现——UDF和GenericUDF,然后以此为基础在下一章介绍UDAF和UDTF的实现。Hive有两个不同的接口编写UDF程序。一个是基础的UDF接口,一个是复杂的GenericUDF接口。org.apache.hado..转载 2022-04-28 20:57:56 · 1910 阅读 · 0 评论 -
hive sql 自动根据时区转换
select date_format(from_utc_timestamp(1567640142000,"UTC"),'yyyy-MM-dd') as local_time2019-09-04selectdate_format(from_utc_timestamp(1567640142000,"GMT+8"),'yyyy-MM-dd')aslocal_time2019-09-05转载 2022-04-08 16:44:17 · 990 阅读 · 0 评论 -
hive时间戳函数之unix_timestamp(),from_unixtime,to_utc_timestamp
一. 日期>>>>时间戳1.unix_timestamp() 获取当前时间戳例如:当前时间戳:select unix_timestamp() --1565858389获取当前时间:echo `date -d 'now' '+%Y-%m-%d'` -- 2020-07-16获取当前时间:echo `date +%Y%m%d` --20200716 2.unix_timestamp(string timestame) 输入的时间戳格式必须..转载 2022-04-08 16:19:42 · 4787 阅读 · 0 评论 -
hive函数to_unix_timestamp与unix_timestamp效率问题
可怕,hive版本1.2.1,实践中发现,to_unix_timestamp比unix_timestamp函数快几十甚至上百倍!!!转载 2022-04-08 16:13:12 · 738 阅读 · 0 评论 -
HIVE时间戳错误unix_timestamp时间转换与本地时间不同
1.select from_unixtime(unix_timestamp(),‘yyyy/MM/dd HH:mm:ss’);执行时间与本地时间有误差时间戳:2019/01/16 02:36:13本地时:2019-01-16 10:36:10正好相差8小时安装ntp服务同步时间也无效最后翻找官方文档查看unix_timestamp获取时间属性:Converts time string in format yyyy-MM-dd HH:mm:ss to Unix timestamp (in sec.转载 2022-04-02 20:08:30 · 1621 阅读 · 0 评论 -
Hive中日期处理
1、日期函数UNIX时间戳转日期函数:from_unixtime()函数 格式 返回值 说明 from_unixtime from_unixtime(bigint unixtime[, string format]) string 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式 hive (temp)> select from_unixtime(1323308943,'yyyyMMdd')..转载 2022-04-02 20:06:51 · 1163 阅读 · 0 评论 -
Hive、Presto、PostgroSQL 时区、日期、时间转换(昨天、周)
UTC转GMT+0800(东八区)select from_utc_timestamp(cast(regexp_replace(regexp_replace('2019-07-12T09:01:59.056Z','T',' '),'Z','') as timestamp),"GMT+0800")【重点在于】:from_utc_timestamp(‘1970-01-01 08:00:00’,‘PST’) 函数可以将UTC时区的时间转换为其他时区,但是其第一个参数格式需要是"yyyy-MM-dd HH:.转载 2022-04-02 20:01:30 · 1898 阅读 · 0 评论 -
Hive时间函数from_utc_timestamp 把UTC标准时间切换到北京时间
首先简单地解释下几个含义:1. 时间戳(unix timestamp)表示以(1970-01-01 00:00:00)为起点,到现在的秒数。2. GMT和UTC先说结论,UTC与GMT基本上等同,误差不超过0.9秒。GMT,即格林尼治标准时间,也就是世界时。UTC,即协调世界时。UTC现在作为世界标准时间使用。用from_utc_timestamp 把UTC标准时间切换到北京时间:--假如现在有UTC时间:'1970-01-01 00:00:00',把它转为北京时间,hiveS.转载 2022-04-02 17:23:01 · 6645 阅读 · 0 评论 -
HIVE获取最新分区的数据的方法
场景以dt(日期)分区的hive表,获取最新一天的分区数据如果是普通的SQL的话,下面这样写就可以了,但是hive中这种写法会报错SELECT*FROM xxxWHERE dt=(SELECTmax(dt)FROMxxx)解决方法在hive里,要用alias才能获取分区中的数据,而且查询条件(WHRER)中还必须带有分区字段(dt),否则会报错SELECTb.item as `item`FROM(SELECT MAX(dt) as latest_dt FROM xxxx .转载 2022-02-18 15:49:00 · 5207 阅读 · 0 评论 -
Hive UDF函数使用步骤
1.上传jar包到HDFS Hadoop fs -put local_path/test_udf.jar hdfs_path/test_udf.jar 2.创建Hive 永久函数 CREATEFUNCTIONdb_name.test_function_nameAS'com.baidu.traffic.udf.TestFunction'USING JAR'hdfs://hdfs_path/test_udf.jar'; 注:建议创建函数时指定库名,使用...原创 2022-02-16 10:54:34 · 2880 阅读 · 0 评论 -
Hive三种去重方法,distinct,group by与ROW_Number()窗口函数
订阅专栏一、distinct,group by与ROW_Number()窗口函数使用方法1. Distinct用法:对select 后面所有字段去重,并不能只对一列去重。(1)当distinct应用到多个字段的时候,distinct必须放在开头,其应用的范围是其后面的所有字段,而不只是紧挨着它的一个字段,而且distinct只能放到所有字段的前面(2)distinct对NULL是不进行过滤的,即返回的结果中是包含NULL值的(3)聚合函数中的DISTINCT,如 COUNT( ) 会过滤掉为.转载 2022-02-10 19:28:30 · 5757 阅读 · 0 评论 -
Hive(十一)--数据去重及row_number()
distinct会整条数据去重,有一项是不同的整条数据就算不同的,不会去掉,按照某一个字段去重需要如下方法hive数据去重,并根据需求取其中一条数据案例:name adx tran_id cost ts ck 5 125.168.10.0 33.00 1407234660ck 5 187.18.99.00 33.32 14...转载 2022-02-10 19:25:56 · 3042 阅读 · 0 评论 -
Hive使用CURRENT_TIMESTAMP()函数少8小时问题(已解决)
-- 获取当前日期 UTC 默认时区SELECT CURRENT_TIMESTAMP() def-- 假设给定的时间戳是UTC并转换为给定的时区(从Hive 0.8.0开始)UTC 默认时区 转为 GMT+8 上海时区SELECT from_utc_timestamp(CURRENT_TIMESTAMP,'GMT+8') from_utc-- 假设给定时间戳在给定时区内并转换为UTC(从Hive 0.8.0开始) 设置为GMT-8 时区 再转为 UTC 默认时区SELECT ..转载 2022-01-07 20:00:51 · 1844 阅读 · 0 评论 -
【hive】约束-enable|disable novlidate
ENABLE|DISABLE NOVALIDATE RELY/NORELY启用约束:enable novalidate :启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据.禁用约束:disable novalidate:关闭约束,删除索引,可以对约束列的数据进行修改等操作.Hive包含对未经验证的主键和外键约束的支持,一些sql工具在存在约束时会生成更加高效的查询,由于这些限制条件未经验证,上游系统在加载到Hive之前需要确保数据的完整性。常用的PK( PR...转载 2022-01-07 19:59:20 · 1373 阅读 · 0 评论 -
hive 常用日期格式转换
固定日期转换成时间戳select unix_timestamp('2016-08-16','yyyy-MM-dd') --1471276800select unix_timestamp('20160816','yyyyMMdd') --1471276800select unix_timestamp('2016-08-16T10:02:41Z', "yyyy-MM-dd'T'HH:mm:ss'Z'") --147131296116/Mar/2017:12:25:01 +0800 转成正常格式(y..转载 2022-01-07 19:47:36 · 1001 阅读 · 0 评论 -
Hive分区表新增字段后插入数据显示为null
对Hive分区表进行新增字段后,会出现一个奇怪的情况,就是往 已经存在的 分区中装载数据后,某些字段的值显示为null,但实际情况是数据文件中对应的字段值其实是有值的。下面我们重现该问题:创建一个分区表往表中装载数据给表新增分区再往表中装载数据并查询数据装载成功后,通过查询可以看出,新创建的分区中数据显示正常,但是已经存在的time=20171010分区中新增数据后,新增的字段显示为null。难道数据没有插入成功?查看分区表在HDFS上对应的数...转载 2021-12-29 17:49:00 · 1774 阅读 · 1 评论 -
hive新增字段以后,插入成功但是显示为null
hive新增两个字段,执行脚本没有报错,select出来以后值为空然后单独执行代码发现,数据不为空解决方法:1.show create table table_name;找到该表元数据的存储路径2.删除该分区路径下的deflate文件:hadoop fs -rm hdfs://ns1/user/hive/warehouse/xxx.db/table_name/dt=2019-01-20/000000_0.deflate即可重新初始化数据,重新select显示正常。...转载 2021-12-29 17:41:23 · 840 阅读 · 0 评论 -
Hive添加列、修改列(调整位置)、删除列操作等
1.添加1列或多列# 添加1列alter table table_name add columns( user_id bigint comment '用户ID');# 添加多列alter table table_name add columns( name string comment '用户名称', city string comment '城市', sex string comment '用户性别', age ...转载 2021-12-24 15:59:34 · 6722 阅读 · 0 评论 -
Hive建表-分隔符
在hive建表中,默认的分隔符为 ‘,’ ,可以指定想用的分隔符hive默认的列分割类型为org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe,这其实就是^A分隔符,hive中默认使用^A(ctrl+A)作为列分割符,如果用户需要指定的话,等同于row format delimited fields terminated by '\001',因为^A八进制编码体现为'\001'.所以如果使用默认的分隔符,可以什么都不加,也可以按照上面的指定加‘\0...转载 2021-05-23 17:32:40 · 7259 阅读 · 0 评论 -
[Hive_3] Hive 建表指定分隔符
0. 说明 Hive 建表示例及指定分隔符1. Hive 建表 Demo 在 Hive 中输入以下命令创建表 user2create table users2 (id int, name string, age int) row format delimited fields terminated by '\t'; 插入数据insert into users2 values(1,'tom',18);2. 分隔符类型...转载 2021-05-23 17:27:25 · 4707 阅读 · 0 评论 -
hive命令行中显示列名字段的配置
涤生手记 2018-03-05 22:31:24 15006 收藏 5分类专栏: Hive实战和企业数仓建模 文章标签: hive显示列名 hive列名显示 hive基础配置 hive列 hive版权公司集群CLI命令行测试,发现Hive命令行输出不显示列名,或者显示的列名带表名,可读性很差哇。解决办法:进入hive cli后 set hive.cli.print.header=true;但是显示列名以后,又出现表名+列名的显示方式,可读性也不好。继续在hive cli中...转载 2021-05-22 18:09:13 · 354 阅读 · 0 评论 -
HIVE-如何查看执行日志
HIVE既然是运行在hadoop上,最后又被翻译为MapReduce程序,通过yarn来执行。所以我们如果想解决HIVE中出现的错误,需要分成几个过程HIVE自身翻译成为MR之前的解析错误 Hadoop文件系统的错误 YARN调度过程中的错误2,3过程中的错误,请参考hadoop相关的教程,这里只是提醒大家思考的时候需要考虑到这两个方面的原因。搞清楚哪一个过程出问题之后采取进一步分析。1.HIVE默认log文件保存的地方/tmp/<user.name>文件夹的hiv...转载 2021-05-19 19:37:24 · 1325 阅读 · 0 评论 -
ERROR tool.ImportTool: Import failed: java.io.IOException: Hive exited with status 64
20/05/20 16:38:16 ERROR tool.ImportTool: Import failed: java.io.IOException: Hive exited with status 64 at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:384) at org.apache.sqoop.hive.HiveImport.executeScript(HiveImpo...转载 2021-05-19 14:32:42 · 2075 阅读 · 0 评论 -
实时计算与批量计算相比存在哪些差异?
批量计算目前绝大部分传统数据计算和数据分析服务均是基于批量数据处理模型: 使用ETL系统或者OLTP系统进行构造数据存储,在线的数据服务(包括Ad-Hoc查询、DashBoard等服务)通过构造SQL语言访问上述数据存储并取得分析结果。这套数据处理的方法论伴随着关系型数据库在工业界的演进而被广泛采用。但在大数据时代下,伴随着越来越多的人类活动被信息化、进而数据化,越来越多的数据处理要求实时化、流式化,当前这类处理模型开始面临实时化的巨大挑战。传统的批量数据处理模型传统的批量数据处理通常基于如下处理模型:转载 2021-04-05 11:37:04 · 3842 阅读 · 0 评论 -
sql 累计占比_sql 面试题(难题汇总)
除了sqlzoo的练习题外,为了加大练习强度,我还不断搜集一些其他的SQL题,特别是大小厂面试题的类型。我把比较难的题挑出来做了一个合集,才有了这篇文章。我会把题目和答案分开放,方便先自己练习,不懂再查答案。【1】腾讯面试题table_A ( 用户userid和登录时间time)求连续登录3天的用户数【2】滴滴面试题学生表:tb_student(name:学生姓名,id:学号,class:班级,in_time:入学时间,age:年龄,sex:性别,major:专业)学生成绩表:tb_s.转载 2021-04-03 21:50:11 · 856 阅读 · 0 评论 -
hive计算分位数
hive里面倒是有个percentile函数和percentile_approx函数,其使用方式为percentile(col, p)、percentile_approx(col, p),p∈(0,1)p∈(0,1)其中percentile要求输入的字段必须是int类型的,而percentile_approx则是数值类似型的都可以其实percentile_approx还有一个参数B:percentile_approx(col, p,B),参数B控制内存消耗的近似精度,B越大,结果的准确度越高。...转载 2021-04-03 21:30:52 · 3285 阅读 · 0 评论 -
Hive学习笔记:split函数分割字符串
语法split(str string, regex string) -- 使用 regex 分割字符串 str返回值为一个数组。基本用法select split('a,b,c,d', ',') from temp_cwh_test; -- 分割-- 结果为数组["a","b","c","d"]截取字符串中某个值select split('a,b,c,d', ',')[0] from temp_cwh_test; -- 提取第1个值a可以指定提取结果数组中...转载 2021-04-02 19:30:44 · 5095 阅读 · 0 评论 -
lead() over(partition by order by )与lag() over(partition by order by )的用法
医院项目有个需求,需要计算同一个病人(同一个病人BAH病案号相同)两次入院间的再入院天数(本次入院时间与上次出院时间的时间差),所以使用窗口函数lead() over(partition by ... order by ...),具体SQL如下SELECT c.brxh,c.bah,c.RYRQ,c.CYRQ,lead(ryrq,1) over(PARTITION BY bah ORDER BY ryrq) lead_ryrq,(lead(ryrq,1) over(PARTITION BY bah ...转载 2021-03-14 12:53:06 · 1187 阅读 · 0 评论 -
hive之insert导入分区数据
阅读目录1、分区参数介绍 2、分区表的创建 3、数据插入方式 4、insert into 和 insert overwrite数据库分区的主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间,主要包括两种分区形式:水平分区与垂直分区。水平分区是对表进行行分区。而垂直分区是对列进行分区,一般是通过对表的垂直划分来减少目标表的宽度,常用的是水平分区。回到顶部1、分区参数介绍 hive.exec.dynamic.partition:是否启动...转载 2021-03-02 19:17:48 · 10227 阅读 · 1 评论 -
网易云音乐数仓模型设计实践
编者荐语:数仓模型架构搭建、模型设计是整个数仓建设的核心部分。数仓建模的价值体现在:数据质量、健壮水平、资源消耗、服务响应速度。以下文章来源于网易有数,作者大数据平台网易有数网易有数致力于帮助用户快速在业务场景中应用大数据,助力业务发展和产业升级,让数据更高效地驱动生产力。网易有数旗下包含有数BI,大数据平台,标签画像、CDP、AI机器学习平台等子产品写在前面:我们为什么要建模这里想先说下,这些年我在数仓摸爬滚打的一些经历:刚毕业那会儿,我觉得数仓简单啊...转载 2021-03-02 13:34:59 · 439 阅读 · 0 评论 -
Hive中and和or的执行顺序
今天在网上看到hive中and的执行优先级比or高,觉得很奇怪,于是就亲自尝试了一下,发现果然如此,下面是我测试的一些简单语句:select1 from student where 1=0 or 1=1 and 1 = 0;执行结果为空select 1 from student where 1=0 or 1=1 and 1 =1;执行结果为1第二个select语句毫无疑问where语句后面的值返回为true,无论and或者or的优先级如何都一样,但是第一个select语句缺不是...转载 2020-12-24 10:52:18 · 2155 阅读 · 0 评论 -
Required field ‘client_protocol‘ is unset! Struct:TOpenSessionReq(client_protocol:null, configuratio
sparksql 2.和hive2.1.1由于sparksql中的hive-cli 等包的版本是1.2的需要自己下载,下载替换之后不报错,替换之前做好备份转载 2020-11-26 14:12:10 · 686 阅读 · 0 评论 -
解决java使用jdbc连接hive2出现Required field ‘client_protocol‘ is unset! Struct:TOpenSessionReq
java.sql.SQLException: Could not establish connection to jdbc:hive2://:**** Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=***})at org.apache.hive.jdbc.HiveConnection.openSession(Hive...转载 2020-11-26 14:11:09 · 2420 阅读 · 0 评论 -
hive客户端连接服务端报错“Required field ‘client_protocol‘ is unset! ”异常解决
今天在将springboot项目中运行时,调用集群hive服务器端的时候,报了这个异常!其中的Required field 'client_protocol' is unset!一度让我怀疑yml配置文件出差错了。后来在不断在国内外平台上不断查找原因,终于明白了:项目的Pom文件中hive-jdbc版本号必须要与hive Server的version要保持一致解决方案先进入到hive的安装目录下,查看当前hive的版本。...转载 2020-11-26 14:10:26 · 1321 阅读 · 0 评论 -
总结:Hive性能优化上的一些总结
Hive性能优化上的一些总结注意,本文百分之九十来源于此文:Hive性能优化,很感谢作者的细心整理,其中有些部分我做了补充和追加,要是有什么写的不对的地方,请留言赐教,谢谢前言今天电话面试突然被涉及到hive上有没有做过什么优化,当时刚睡醒,迷迷糊糊的没把以前实习的中遇到的一些问题阐述清楚,这里顺便转载一篇并来做一下总结介绍首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题?数据量大不是问题,数据倾斜是个问题。 jobs数比较多的作业...转载 2020-11-25 17:30:54 · 2968 阅读 · 0 评论 -
Hive,Hive on Spark和SparkSQL区别
Hive on MapreduceHive的原理大家可以参考这篇大数据时代的技术hive:hive介绍,实际的一些操作可以看这篇笔记:新手的Hive指南,至于还有兴趣看Hive优化方法可以看看我总结的这篇Hive性能优化上的一些总结Hive on Mapreduce执行流程执行流程详细解析Step 1:UI(user interface) 调用 executeQuery 接口,发送 HQL 查询语句给 Driver Step 2:Driver 为查询语句创建会话句柄,并将...转载 2020-11-25 17:12:58 · 374 阅读 · 0 评论 -
Spark SQL & Spark Hive编程开发, 并和Hive执行效率对比
SparkSQL也公布了很久,今天写了个程序来看下SparkSQL、SparkHive以及直接用Hive执行的效率进行了对比。以上测试都是跑在YARN上。 首先我们来看看我的环境:3台DataNode,2台NameNode,每台机器20G内存,24核 数据都是lzo格式的,共336个文件,338.6 G 无其他任务执行如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop三个测试都是执行 select ...转载 2020-11-25 17:11:57 · 835 阅读 · 0 评论 -
hive常见的几种文件存储格式与压缩方式的结合-------Parquet格式+snappy压缩 以及ORC格式+snappy压缩文件的方式
一.使用Parquet存储数据数据使用列存储之前是普通的行存储,下面是行存储的的文件大小,这个HDFS上的数据使用parquet列存储,可以将文件的大小减小化。下面具体讲parquet存储数据的代码以及加载数据的格式。数据库代码:create table if not exists db_yhd.track_log_parquet(id STRING,url STRING,referer STRING,keyword...转载 2020-11-03 14:10:51 · 1582 阅读 · 0 评论 -
Hive数据导入方案—使用ORC格式存储hive数据
目的:将上网日志导入到hive中,要求速度快,压缩高,查询快,表易维护。推荐使用ORC格式的表存储数据思路:因为在hive指定RCFile格式的表,不能直接load数据,只能通过textfile表进行insert转换。考虑先建立txtFile格式内部临时表tmp_testp,使用hdfs fs -put命令向tmp_testp表路径拷贝数据(不是load),再建立ORC格式外部表http_orc,使用insert命令把tmp_test表导入http_orc中,最后删除...转载 2020-10-28 17:24:01 · 4273 阅读 · 1 评论 -
清空hive表时报错Cannot truncate non-managed table
在执行命令truncate 清空hive表时,报错如下:FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table mtime_qa.userorder_logs我清空的是一个外部表。如图:看hortontworks官方解释:note:This error happens when you're trying to truncate an external table. Truncate ...转载 2020-10-27 11:21:48 · 6230 阅读 · 0 评论