hive
文章平均质量分 82
cclovezbf
这个作者很懒,什么都没留下…
展开
-
hive 报错return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解决思路
但是这个错是hive的错,我们开发过程 中会遇到很多hive问题,都怎么解决呢?我建议看源码,但先不要看报错源码,直接看errorCode源码,别人hive的开发者也是人,也知道这里会报错,可能会好心告诉我们怎么解决。看到这里获取配置项,就舒服了,毕竟就算我们发现假设hive源码有问题,我也没法修改cdp的源码。那么直接看hive的源码,毕竟cdp也是抄的hive官方的代码。1.设置线程数为1,线程数越少,产生bug的几率就越小。3.改为分区表,此时不在一个目录了,就不会有这个问题了。原创 2023-11-23 17:32:42 · 3149 阅读 · 0 评论 -
hive 之select 中文乱码
concat_ws("",arrary("境内")) 有用,此时也不知道如何下手,只有掏出大杀器 explain.其实还有别的办法,但是和concat_ws(array(""))一样比较丑陋,我就不说了。经过多方面测试 concat("境内") concat_ws("","境内")没用,有时候我们需要自定义一列,有时是汉字有时是字母,结果遇到这种情况了。此处的中文乱码和mysql的库表 编码 latin utf 无关。此时怀疑就是if 函数起了作用,但是一时间不知道是为啥。即可解决中文乱码问题!原创 2023-10-12 16:16:44 · 1463 阅读 · 0 评论 -
impala常用时间函数,date->string->timestamp互转
impala 和hive不一样,hive是弱类型,比如int和string在大部分条件下可以比较比如hive select 1='1' --结果true或false但是impala select 1='1' 报错 operands of type TINYINT and STRING are not comparable: 1 = '1'这样带来的好处是 类型一致结果更准确,缺点是增加开发人员的精力。。话不多说直接来案例。原创 2023-09-22 16:39:23 · 3447 阅读 · 0 评论 -
hive on tez资源控制
sql 注意这里文件数有17个 共计321M 最后是划分为了21个task为什么会有21个task?不是128M 64M 或者说我这里小于128 每个文件一个map吗?再仔细看每个task的日志 map0 data_source=CSIG/HIVE_UNION_SUBDIR_1/000008_0:0+16903572map1 data_source=CSIG/HIVE_UNION_SUBDIR_1/000000_0:0+16960450map2 data_source=CSIG/HIVE_UNION原创 2023-08-10 16:33:52 · 1400 阅读 · 0 评论 -
hive通过外表整合es,超详细过程。
简单的理解,我们最开始写的地址没有错,但是es这个家伙会发现其他节点的ip,然后用其他ip去连,你这个为true了就只能用我写的那个了。这个不就是kibana的get请求么,我在es试了确实没权限,要组长帮忙开通这个权限后,这个错就解决了。官网的介绍很简单,我看了很多博客,写的也很简单,但是我搞了半天才勉强成功,分享下,免得各位多走弯路。这里提到了essential 和required看来都是必须的,还有写defalut的就不说了。我遇到了一个最大的问题。但是tm的就是不能直接select *!原创 2023-07-28 17:15:58 · 1488 阅读 · 0 评论 -
hive创建udf函数流程
- 这个属于额外的jar包 自己按需引用 比如你想搞得函数 里面要连接mysql 这里肯定需要引入mysql的驱动包 我这个包是为了计算字符串的表达式的。开始继承hive的udf接口,有很多小伙伴这个时候就喜欢看别人是怎么写的,这个时候就是体现个人差距的时候了,如何不看别人文档自己写呢?抄别人的 为啥不直接抄hive的呢?-- 这个只需provided即可,因为服务器有hive环境-->就是因为没加数据库的名字,反正建议各位加下。注意啊 这里加上数据库的名字,否则退出会话就没了。有精度误差,无伤大雅。原创 2023-06-09 16:03:18 · 1050 阅读 · 0 评论 -
hive如何实现oracle的connect by prior函数
hive里添加py add file hdfs://s2cluster/tmp/hive/cc/cc.py;1.修改hive源码 注释如下,然后打包重新运行即可。大佬写的很详细,有兴趣自己看,但是存在一个问题。2.为什么会这里抛异常呢?我是用的使cdp的hive。复制好大佬的py文件 放到hdfs。使用transform函数。这个时候有两种解决办法。原创 2023-05-31 16:24:41 · 1185 阅读 · 0 评论 -
tez得文件生成个数与什么有关?
看yarn app我的appId是1377而我都已经设置了。总不可能是我吃饱了没事干,专门骗你们的吧。原创 2023-04-07 17:04:55 · 740 阅读 · 1 评论 -
hive分区表之insert overwrite 注意事项
比如跑上月的数据最开始有44条记录,后面业务说不对,应该一条都没有的,结果你重跑了,确实跑出了0条记录,但是你插入的时候就是不能覆盖。所以这里有个注意事项!如果我们建立了一个分区表,如果每个月都要更新数据,不要因为省事就是用动态分区插入。但是今天遇到一个问题,如果我查询的数据=0,那么数据还会覆盖么?直接插入分区的,分区都没了。前者是指定分区,后者是动态分区。动态分区插入的 没有影响。以往我们插入分区 需要。原创 2023-03-24 17:04:19 · 3408 阅读 · 0 评论 -
hive之正则函数研究学习regex/regex_replace/regex_extract
首先学习这个之前要先知道一些正则的基本知识。随便百度一下将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。匹配输入字符串的结束位置。原创 2023-03-09 16:07:39 · 3970 阅读 · 0 评论 -
hive实现oracle merge into matched and not matched
一般来说 table1 是远大于table2的。例如学校每年的学生数量都差不多=table2.但是学校历史学生数据量是很大的=table1.table1 可以理解为记录学生最好成绩的表。table2可以理解为每次学生的考试成绩。所以oracle的matched not match 的删掉t2 插入t3 然后插入t4。我们要追寻更深层次的知识海洋。----------------------------------或者下面这种写法。t2 和t3 相当于id重叠的部分。两个的最后查询结果是ok的。原创 2023-02-15 12:07:38 · 1453 阅读 · 0 评论 -
hive创建1-10的多条记录,或者一条数据复制为多条记录
poexplode可以改为explode和rownumber。其中repeat函数可以改为space(10)2.udtf函数1变多。原创 2023-02-03 16:58:40 · 961 阅读 · 0 评论 -
hive时间和字符串互转,时间函数
hive里经常需要将字符串转化为date或timestamp 或者转化为日期格式的string先说一个简单的 cast(xx as date/string/timestamp) 这个大多情况都可以用。原创 2022-12-19 14:13:42 · 29578 阅读 · 0 评论 -
oracle和hive之间关于sql的语法差异及转换
oracle存储过程中的各种oracle的独有用法如何转化为hive的函数,以及oracle和hive语法之间的差异原创 2022-12-15 11:23:09 · 3842 阅读 · 0 评论 -
oracle的trunc函数改为hive的函数
oracle 的trunc函数改为hive的floor 函数原创 2022-12-15 11:21:15 · 1058 阅读 · 0 评论 -
oracle (+)学习
最近工作需要将oracle的存储过程转化为hive的sql脚本。遇到很多不一样的地方,例如oracle连接中有(+)号的用法。借鉴这篇文章,但是这个排版比较烂。。。先建表和插入数据首先说明(+)代表什么?代表这一侧的数据可以为空!a.id=b.id(+) 代表b表和a表关联的时候以a表作为主表。原创 2022-12-13 17:50:23 · 1932 阅读 · 1 评论 -
hive报错 Too many bytes before newline: 2147483648
2.Too many bytes before newline ,这个报错可能是hive源码里有的报错信息,我们看下这个报错的具体位置,可能是有些属性需要我们额外去配置,或者其他问题,看源码总是好的。就和内存一样 hive的有些参数默认是比较保守的,可以适当调大点,就避免很多报错了。此时已经怀疑是最后一条数据有问题了,但是没证据咋办。但是如果是一个年迈的程序员,一眼就可以看出这个数字很熟悉,比如我 哈哈。看了下大概就是读取每一行的数据,并且获取大小,对大小有个判断。原创 2022-11-29 10:47:35 · 1396 阅读 · 4 评论 -
hive表加载csv格式数据或者json格式数据
先说第二行数据a,b,c,,,,,d 这个我确实是解决不了。但是换种思路,csv不是说分割符一定就是,也可以是其他符号比如@,那么a@b@c,,,,,d ,这种对于csvreader来说不就是小菜一碟。就是逃逸字符的下一个字符逃跑了。a,b,ab"cd" --其中这种很简单 因为是根据,分割的 所以直接分成三部分。其实逃逸字符本身的目的我认为就是有些字符串千奇百怪,但是我还要保留其原来特性。"","8"这里第一个字段是""。a,b,c,,,,,d --这个的第三列字符串就是 c,,,,,d。原创 2022-11-25 18:04:59 · 3138 阅读 · 0 评论 -
idea连接kerberos认证的hive
其实用dbeaver连接hive就可以了。但是呢,idea也有这个功能,本着研究下的想法就试试。结果最后成功了 最后记录下。参考文章。感觉不太行里面提到了两个解决办法,个人只习惯用第一个。新增一个hive数据源url填写AuthMech=1;vm option填写。原创 2022-11-18 10:53:45 · 3974 阅读 · 2 评论 -
hive连接报错 Bad URL format. Hostname not found in authority part of the url “xxxxx” . Are you missing
这个是连接hive报错的 大概率就是hiveConnection 和hiveDriver里解析hive url 和hive -d xxx=xxx这种时候出错了。背景:用dbeaver连接kerberos认证的hive,之前都是好好的,今天手贱点了下重置结果按照以前的死活连不上报上面的错误,其实这个错以前也遇到过忘了怎么解决的。明明显示了host为啥是null。说实话吧这个源码有点难搞,最近刚好我还在学习如何debug hive源码,还没学会咋办?看了下uri的源码,说实话吧也能看,但很烦,不想看。原创 2022-11-18 10:15:19 · 2427 阅读 · 0 评论 -
hive修复所有表
假设这个表student 以前有12345 共5个分区,我们把数据迁移过来的时候,没有msck,那么hive的元数据里就没有这5个分区的记录。举例 动态分区,查出了5个分区,结果4个成功,1一个失败!-----------------------------开始实验---------------------------------------现在继续跑sql查出来了23456这5个分区,然后动态分区 insert into, 这个时候可能就有问题了。本来想混过去,还是想了想,直接实战来测下这个问题。原创 2022-11-11 17:47:06 · 1719 阅读 · 0 评论 -
hive on spark 之通过spark web ui详解数据倾斜及思路历程
差不多就是如下 a join b join c join d join e join f 一长串。说实话我也难搞,每次就是一长串sql让我找问题 让我优化,我看完sql理解下都要十几分钟。。。原创 2022-10-20 11:32:25 · 2089 阅读 · 0 评论 -
hive 如何优雅的将小表扩容十倍。
二、将joinkey的指定数据扩容十倍。一 、将所有数据扩容十倍。原创 2022-10-20 10:43:55 · 875 阅读 · 0 评论 -
hive on spark 解决分区表目录下多个空文件
说明了啥,spark.merge 是针对非空文件去merge的或者说这个参数起效,一个目录下必须有一个非空文件,我这几个目录都是1000个空文件,所以根本不merge。上述就是空文件,暂时不测试了。本来想着下次更新,但是想了下,问题也不复杂,继续研究下。按道理spark 会自动merge小文件的,为啥没有merge呢?但是这样也会有一定的问题,reduce只有10个速度效率会有所下降。首先思考下为啥又2w+task,说明有2w+文件,未免也太多了。也很简单,我们知道生成文件的个数=task的数量。原创 2022-10-13 11:52:04 · 947 阅读 · 0 评论 -
hive on spark 执行sql报错
报错信息ERROR : FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed due to: Job 3 cancelled。这个是因为我们之前设置的excutor.memory=6G,其中有一些reseverd啥的。这个是啥,看过我其他文章的我都会提到这个,这个vector叫矢量化,也就是看你开启矢量化。如下图 这个文件格式如下 是真的垃圾。原创 2022-09-20 16:41:45 · 3209 阅读 · 1 评论 -
hive3.1decimal计算详细逻辑
本文章参考先备注下hive2合hive3计算逻辑不一样 且hive2存在bug 详情见上篇文章。decimal计算中我们主要是用+-*/那么这几个计算到底是什么样呢?比如 decimla(38,18)*decimla(38,18) =我们期望的是什么呢?decimla(38,18) 还是decimla(38,36)那万一数值是1234567890123456789.1*1234567890123456789.1注意这个前面是19位*19位 那么我们期望的值是什么呢?1.直接报错。原创 2022-09-16 17:32:59 · 1303 阅读 · 0 评论 -
hive on tez学习之官网和源码
简单来说 hive是根本,执行引擎目前用过spark 和mr,现在是tez。一般来说mr 有点拉跨主要基于磁盘,spark是基于内存计算,通过spark划分宽窄依赖并且形成dag图,然后执行。其实tez和spark本身是差不多的 只不过可能底层思想不一样,现在来学习。原创 2022-09-14 15:04:52 · 1037 阅读 · 0 评论 -
hive语法
标准的建表语句--外表--依赖表--约束表 hive 3.0.0。原创 2022-09-06 11:14:11 · 862 阅读 · 0 评论 -
hive语法之insert overwrite/insert into
这里提到了hive2.3.0之后 如果表属性有("auto.purge"="true"),当insert overwrite的时候,之前的数据是不会移动到垃圾箱的(会移动哪里呢?这里提到了一个比较有意思的参数("immutable"="true") 这个单词是不可变的意思,insert into本身是追加的意思,加了这个参数后, 就代表数据/分区只能被插入一次。---其实这个没啥说的主要是我在hive3.1看到表创建自动带purge=ture ,以为会有详细的解释的。原创 2022-09-05 17:49:29 · 7122 阅读 · 0 评论 -
hive学习之grouping set /cube/rollup
就是在我们根据多个维度分组的时候,例如group by a,b,c,d 有时候我们也需要这几个维度中部分维度的聚合值 例如group by a,b。这个时候通过group by a,b,c,d grouping sets((a,b,c,d),(a,b))即可,看起来简洁,使用方便。a=1,b=null ,sum(c)=1 这个到底是根据a 分的组 b默认是null ,还是根据ab 分组,a=1 b=null。需求2,同时算出需求1也就是根据a,b分组的sum(c),和根据a分组后的sum(c)原创 2022-09-05 15:51:08 · 1059 阅读 · 0 评论 -
hive 之with as 和create view 和create temporary table用法
create view 其实和with tmp as 很相似,都是把复杂的可以重用的sql简化,我觉得唯一的区别就是 view是可以创建下次再使用的 但是with只是当前sql有效,甚至不是会话有效。可以看到 这个join with as 和 view 都是执行了两次,但是temporary table 只执行了一次join,所以如果以后尽量不要用with as 卵用没有。之前网上不知道看的那篇文章说with里面的内容可以复用,也就是只计算一次 下次就不计算了,直接拿上次的结果。突然觉得这个例子不好。原创 2022-09-05 10:46:46 · 6452 阅读 · 0 评论 -
orc文件的读写及整合hive
1.使用datax hdfsreader的时候有时候hdfswriter的写速度过慢,针对的我之前的splitpk,可以一定程度减少这个耗时,但是他慢就是慢,就好像a干活很慢,你现在用10个a干活,比之前肯定快,但是还是慢。2.了解orc文件的读写,可以有效的排查问题,例如,decimal字段精度不对,怎么调整,文件大小不是128M怎么做?其实就是把这一段换成我们的writer就行,而且我们的write里有个batch是可以控制写出文件的速度的。以下代码 只用改下main方法的路径,可以直接跑的。...原创 2022-09-01 15:36:37 · 2787 阅读 · 8 评论 -
hive参数优化。
有很多刚学习的小伙伴,想学习参数优化,又不知道有哪些参数,如何优化。给大家,说明思路。1.set 你知道在这里找,说明你知道实际生效的作用2.hive-site.default.xml,你知道在这里找,说明你知道这个配置文件的作用(cdp-hive3.1的部分配置hive官网都没有。。在clouder的官网)3.官网。官网永远是学习最好的地方,不用多说。原创 2022-08-24 15:34:03 · 584 阅读 · 1 评论 -
datax->hdfsreader->orc文件读取出错ArrayIndexOutOfBoundsException: 6
真正的原因应该是hive写的时候采用的高版本 比如 我们cdp是hive3.1.1的 写orc文件的时候会有一个版本号, 比如我debug的时候发现cdh-hive2.1.1版本的orc文件都是 hive13083。这里我就要吐槽了,注意看这里很明显是一个记录hive或者orc版本的枚举,明显有个future就是为了应付后面的版本的升级 id 0123肯定是老版本了,4差不多是新版本,还有未来的版本,你这里这个from方法写的和屎一样,写个大于不好么。那个version.from写的垃圾,改下就好了呗。..原创 2022-08-23 10:03:15 · 1695 阅读 · 2 评论 -
hive-mapJoin和skewJoin
hive文件如何均匀分布mapjoin真的好吗?skewjoin是什么?distribute by round(rand()*20) 有什么用?原创 2022-06-02 18:15:21 · 649 阅读 · 0 评论 -
hive-skewJoin
skewJoin 是什么就是数据倾斜的时候,hive会帮你做的事。那么具体怎么帮你解决数据倾斜呢?Configuration Properties - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-hive.optimize.skewjoin.compiletime先总结下原创 2022-06-02 17:11:23 · 603 阅读 · 0 评论 -
hive decimal bug, nvl(decimal,1)=0
话不多说直接上图 hive版本为2.1.2-cdh6.3.2一个nvl (decimal,1)结果=0 怎么就出现bug了呢???按道理不是两列值相等么,真是服了,怎么这么多bug,直接百度再说,结果是我的文章,,难道要我自己借鉴自己?——————————————————————————————————————————将decimal转string继续研究,根据我上次研究的问题,decimal容易出现精度丢失等问题,我记得我当时转了string就好了。那么测试下,结果ok,但是d原创 2022-05-25 10:52:41 · 1545 阅读 · 2 评论 -
hive decimal计算出现null或者精度丢失
hive decimal计算出现null或者精度丢失原创 2022-04-02 10:23:32 · 5765 阅读 · 0 评论 -
bucketId out of range: -1 (state=,code=0)
hive select * from table 出现如上报错背景 集群为cdp ,hive版本为3.1集群最开始安装了hive 和tez 没有安装hive on tez。后面发现select count(1)的时候没有启动tez最后是 hive 不安装 hiveserver2hive on tez 安装了另外 这个版本的hive有时候是建外表的,有时候是内表,搞得我都怀疑自己了。。。建议大家都show create table 看下说完了。然后我们是用d...原创 2022-03-02 10:23:56 · 3554 阅读 · 10 评论 -
hive如何取出数据的前几个元素
今天遇到个问题,例如selectcompany_name,concat_ws(',',collect_set(contract_num)) contract_numsfrom tablegroup by contract_num如果这个contract_nums数量有100个,我只显示5个。那么怎么办呢?1.基础版select concat_ws(",", array( array('1','2','3','4','5','6','7','8','9','10'原创 2022-02-21 14:55:32 · 5022 阅读 · 0 评论