![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hive
LSB19930706
这个作者很懒,什么都没留下…
展开
-
HDFS坏块处理
告警内容:Missing Blocks解决方法:1.重启HDFS服务./stop-dfs.sh ./start-dfs.sh 或者在某些产品的集群监控管理界面操作,比FI Manager、ClouderaManager、ambari等等重启后观察(重启时间较长,10-20分钟后查看),告警解除;2.如重启HDFS不能修复,可通过手动检查坏块并删除坏块hadoop fsck / #扫描坏块hadoop fsck -delete 坏块地址 #扫描坏...原创 2021-05-11 09:48:14 · 1435 阅读 · 0 评论 -
Hive UDF—给函数添加版本迭代标识
背景:函数会有迭代的过程,对于处理相同字段,由于业务驱动,不同时期会有不同的处理方法,对于以前的函数规则要保留,后续规则要在此函数上迭代,就像体制内常用的,“旧人旧规则,新人新办法”,哈哈,规则可以同时进行。举例:举个与实际业务场景不相关的例子做参考,功能实现上是一样的对某字段使用base64加解密,代码如下import sun.misc.BASE64Decoder;import org.apache.hadoop.hive.ql.exec.Description;import原创 2020-11-17 00:21:51 · 216 阅读 · 0 评论 -
Hive UDF—实现表比对
一、需求背景:源表oracle抽取数据到hive中,源表没有更新时间字段,也无法协调部门配置oracle redo log或者CDC,但是需要获取到变化的数据,并打上标签。此UDF技术点:每张表字段数不固定,如何写不定长函数,像concat,当然可以参考hive源码如何实现concat内置函数,下面使用HashMap存放函数不定长入参。二、代码实现:import java.util.HashMap;import java.util.Map;import org.apache.hadoo原创 2020-11-09 23:47:57 · 941 阅读 · 0 评论 -
Hive桶表实践
桶表的好处1、方便抽样2、提高join查询效率下面会一一体现开启hive分桶有两种方式,一种方式如下,推荐这种方式set hive.enforce.bucketing = true;另一种需要手动指定reduce数量,并在导入到桶表的查询中做分桶查询(distribute by或者cluster by)。set mapreduce.job.reduces = num; --num数量和分桶数量一致...原创 2020-10-29 11:33:00 · 149 阅读 · 0 评论 -
order by和sort by的区别
order by实现的是全局排序,在hive mr引擎中将会只有1个reduce。而使用sort by会起多个reduce,只会在每个reduce中排序,如果不指定分组的话,跑出来的数据看起来是杂乱无章的,如果指定reduce个数是1,那么结果和order by是一致的,如下图,不指定的情况,两种结果对比: order by一般配合group by使用,而group by需要配合聚合函数使用,举个例子而sort by分组时需要使用distribute by,和grou...原创 2020-10-27 16:32:20 · 22181 阅读 · 0 评论 -
Hive map-side Join
如果表join时,有一张表时小表,那么可以在最大的表通过mapper时将小标完全放倒内存中。Hive可以在map端执行连接过程,叫map-side Join。因为map可以和内存中的小标逐一匹配,从而省略掉常规连接操作所需要的的reduce过程。即使对于很小的数据集,这个优化也很明显的要快于常规的连接操作。补交减少了reduce的过程,有事还可以减少map过程的执行步骤。 在hive0.7之前的版本中可以通过指定小表来实现map join,如下select /*+ MAP...原创 2020-10-27 14:54:54 · 455 阅读 · 0 评论 -
深入了解spark sql的join
问1:left join和right join以及join有什么区别?答1:左关联会取左边所有数据,右关联相反,内关联会取满足on条件的数据。问2:那我join,left join时如何添加限制条件?答2:通过where或者and限制条件问3:那and和where限制条件时有什么区别?答3:懵逼中。。。。。。以上3个问答说到底面试官就是想知道到底有没有掌握join,因为hive join时很容易导致数据倾斜,只有进一步了解hive join才能避免这种情况。谓词下推, 顾名.原创 2020-10-26 17:33:42 · 844 阅读 · 0 评论 -
Hive的Multi-Inser
对于同一份数据导入两张不同的表,一般方法insert overwrite table info1 select * from info where sex='male'; insert overwrite table info2 select * from info where sex='female';上述方法会对同一张表全表扫描两次,而使用下面的方法,只需要扫描一次即可将数据导入两张不用的表,结果和上述方法一致from info insert overwrite table info原创 2020-10-23 10:52:21 · 646 阅读 · 0 评论 -
Hive分区表静态分区和动态分区使用
一、静态分区创建一张表create table info(id string,sex string,dt string);导入8条数据如下insert into info select '001','male','201001';insert into info select '002','female','201001';insert into info select '003','male','201002';insert into info select原创 2020-10-22 10:12:43 · 1101 阅读 · 0 评论 -
产品化的spark如何快速的把一张表数据导入到另一张表
背景:现在市面上有很多厂商将spark以及hadoop的生态组件产品化,在ui界面上拖拽来的组件里编写spark sql,或者写spark代码(java,scala,python),类似于传统的数据集成工具datastage,informatica,kettle,将各个组件连接起来组成工作流定时调度,像这样的产品比如联想LeapHD,数梦DTSphere Studio等等,这样的好处是降低大数据开发门槛,新人可以快速的上手工作,数据运维难度大大降低。但是带来的坏处是使用不灵活,下面讲一下在这样的产品中如原创 2020-10-19 17:30:54 · 723 阅读 · 1 评论 -
spark设置超时kill任务
背景:spark本身没有设置timeout的配置,数据开发团队sql on hadoop基础薄弱,很容易写出数据倾斜倾斜等消耗资源巨大的sql,而后其它任务全部卡死,考虑写脚本kill超时的任务,考虑到了如下3个方案1、spark-shell --kill,该方法只支持Spark standalone or Mesos with cluster deploy mode only,而大多数公司的场景是spark on yarn,该方法pass。2、spark源码中有个canceljob的接口,同.原创 2020-10-12 14:52:11 · 3884 阅读 · 7 评论 -
使用jdbc连接Hive
一、hive提供了jdbc的连接方式,就是在hive的某个计算节点开启hiveserver2启动方法如下默认已启动hadoop先启动hive元数据服务hive --service metastore &再启动hiveserver2服务hive--servicehiveserver2 &验证:如下,已通过beeline连接上hiveserver2,证明服务已开启二、通过java jdbc连接hiveserver2将这两个jar包从服务器上的hive li..原创 2020-07-20 09:14:44 · 10512 阅读 · 0 评论 -
Hive reflect函数使用
经验证,reflect函数只能调用jdk中内置的静态方法。函数使用该函数是参数不定长函数,参数1填类名,参数2填静态方法名,后面填java方法的入参使用math工具类,在api中找几个静态方法验证找到类名作为reflect函数的第一个参数:java.lang.Math找到该类下面的静态方法写sql验证:入参不支持小数...原创 2020-07-13 15:35:30 · 1780 阅读 · 0 评论