for your wish
好记性不如烂笔头。个人笔记用的博客
展开
-
数据血缘实现原理
大数据时代,数据的来源极其广泛,各种类型的数据在快速产生,数据也是爆发性增长。从数据的产生,通过加工融合流转产生新的数据,到最终消亡,数据之间的关联关系可以称之为数据血缘关系。在数据中台的大背景下,数仓的开发者经常需要解决以下问题:面对成百上千张的数据表,不知道该如何关联,也不知道这些表具有什么业务价值执行过长,慢的无法忍受的SQL脚本,却不敢轻易进行整改数据表是否包含机密数据需要被清理,以及这些机密数据是否被转存导致权限放大其实,以上的这些问题都可以统一归类为数据发现问题。原创 2024-03-14 10:27:11 · 373 阅读 · 0 评论 -
hdfs小文件处理-hive-spark-flink-hudi-iceberg
提前规避1.流式写入调整流式写入的时间窗口是一个不错的选择,如果业务对实时性要求很高,那么可以根据数据类型(非结构化vs结构化)、append/update频率和数据使用模式(随机读取vs聚合),HBase和Kudu是存储层的更好选择。对于已经存在的小文件,也可以设置定期的Job对这些文件进行压缩、合并,以减少文件量和文件数量。2.过度分区表在决定分区的粒度时,要考虑到每个分区的数据量。为有大文件的分区做计划(用Parquet的话,约256MB或更大),即使这意味着有较少的粒度分..原创 2021-02-23 13:01:37 · 356 阅读 · 1 评论 -
Pyspark判断日期是否为休息日并做成日历表udf
pycharm安装chinesecalender ,file-setting-python interpreter加号找chinesecalender 然后安装。做基础日历表的那一部分可以看我的另一篇博文 Hive日历表。原创 2023-04-20 11:14:48 · 239 阅读 · 0 评论 -
统计hive-hdfs文件大小日常腾出磁盘
【代码】统计hive-hdfs文件大小日常腾出磁盘。原创 2023-02-09 17:15:48 · 410 阅读 · 0 评论 -
大数据平台接入API数据
第一步登记数据源 第二步创建抽数任务 第三步,得到的数据如图 第四步 把数据炸开原创 2022-11-09 18:17:30 · 1216 阅读 · 0 评论 -
Hive的full join
sql里面把某段获取到的最大时间当变量,可fulljoinwhere1=1把那段时间数据(selectmax(dt))放入表中使用再处理。原创 2022-07-29 11:30:12 · 1291 阅读 · 0 评论 -
Hive添加字段-移动字段
dsadsadas原创 2022-07-08 13:26:07 · 1316 阅读 · 0 评论 -
Hive日历表
直接创建一个hive表,日历表原创 2022-07-05 17:46:34 · 691 阅读 · 0 评论 -
自定义UDF函数进行敏感字段加密解密
需求 一些用户数据中包含诸如用户手机号等信息,直接暴露出来的话,是违法的。。。需要对数据进行脱敏,如果单纯的将手机号替换为***号,那么就意味着丢失用户的手机号数据了,因为无法再将***变回手机号。所以需要自定义UDF函数,实现敏感数据的加密解密。 这里实现了两个UDF函数,一个用于加密,一个用于解密。使用Java自带的crypto模块实现AES加密。 在代码中将两个UDF函数中的SecureRandom的Seed写死,这样加密后的数据就是固定的,可以通过解密UDF解析原创 2022-06-17 13:06:59 · 1117 阅读 · 0 评论 -
UDF获取最新分区
获取最新分区<dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version原创 2022-02-26 16:05:46 · 337 阅读 · 0 评论 -
Hive的in和exists改写,半连接和反连接
Hive的In和exists效率低,可以改写成连接的方式来实现IN、EXISTS改写为半连接或者内连接,NOT IN、NOT EXISTS改为反连接或外连接其中的反连接:反连接就是在左外连接的基础之上,找到没能在右表中有匹配的行。select * from person as aleft join numbers as b on a.id = b.xwhere b.x is null;...原创 2021-09-14 10:11:04 · 1057 阅读 · 0 评论 -
Hive参数调整详细
--压缩配置:-- map/reduce 输出压缩(一般采用序列化文件存储)set hive.exec.compress.output=true;set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;set mapred.output.compression.type=BLOCK; --任务中间压缩set hive.exec.compress.intermediate=true;set hi.原创 2021-11-08 14:46:27 · 2442 阅读 · 0 评论 -
Hive处理掉数据中/n/t
regexp_replace(需要处理的字段名称,'\\n|\\r|\\t','') as 重新命名原创 2021-11-02 15:58:54 · 1715 阅读 · 0 评论 -
Hive的rename表 增加字段
Hive表更名问题——RENAME TABLEALTER TABLE table_name RENAME TO new_table_name 这个命令可以让用户为表更名。数据所在的位置和分区名并不改变。换而言之,老的表名并未“释放”,对老表的更改会改变新表的数据? 不,数据所在的位置会移动到hive表默认路径下。如果建表是指定路径LOCATION,那么重名之后,路径会变更。...原创 2021-11-01 14:49:21 · 4956 阅读 · 0 评论 -
Hive中的grouping set,cube,roll up
GROUPING SETS GROUPING SETS作为GROUP BY的子句,允许开发人员在GROUP BY语句后面指定多个统计选项,可以简单理解为多条group by语句通过union all把查询结果聚合起来结合起来,下面是几个实例可以帮助我们了解,以acorn_3g.test_xinyan_reg为例:[dp@YZSJHL19-87 xjob]$ hive -e "use acorn_3g;desc test_xinyan_reg;"user_id ...转载 2021-10-15 17:24:44 · 769 阅读 · 0 评论 -
月度累加,年度累加(多年)-Sum Over
sum over可以完美解决历史累加的问题其中有数据的跨年问题,需要年度重新统计,就在partition by中增加年字段即可select PROJ_ID -- 项目id ,PLAN_MTH .原创 2021-09-01 17:43:23 · 746 阅读 · 0 评论 -
Yarn使用
点击左侧Cluster->Scheduler查看队列使用情况,使用内存和CUP,查看队列中running 的任务查看任务状态->点击右侧ApplicationMaster ActiveJob是正在跑的一段sql,下面是已经完成的点击Description进去查看详情 (一段sql划分成了不同的stage)进入Active Stages查看到stage的任务分布到不同节点状况 可见有的 0ms完成 有的几分钟(甚至有时0ms和一两个小时) 。这种不均衡的就是倾斜的.....原创 2021-07-05 13:19:01 · 365 阅读 · 0 评论 -
Presto和Hive语法对比
工作中经常遇到些时间转换问题:1) log_date:20200110 需要转换为标准日期,或者与时间戳数据进行比较2) 工作环境涉及到presto与hive, 利用presto检查查询时速度更快,因此一般需要同时用presto和hive的语法对日期进行转换下面对最近用到的时间转换进行梳理问题1:时间格式转换(时间格式化)例子: 当前时间20200110 转化为2020-01-10--输出 2020-01-10--hiveselect to_date(from_unixtime(转载 2021-06-28 15:22:32 · 645 阅读 · 0 评论 -
hive的数据倾斜解决(Map端、reduce 端 、join中)
hive的数据倾斜解决(Map端、reduce 端 、join中)lianchaozhao 2020-11-02 15:24:08 667 收藏 4分类专栏: 工作实践 hive 大数据 文章标签: hive 大数据版权hive 的数据倾斜一般我们可以分为 Map倾斜、reduce 倾斜和join 倾斜这几种。一、Map 倾斜Map 端是 MR 任务的起始阶段, Map 端的主要功能是从磁盘中将数据读人内存, Map 端的两个主要过程如图所示。此处复习仪表map 过程1、客户..转载 2021-06-17 14:06:12 · 5369 阅读 · 0 评论 -
Shell变量获取Hive返回值
while循环的使用,if循环的使用,执行hive语句并赋值给shell变量grep过滤无效字符的使用#!/bin/bashstart_date=$1end_date=$2company=$3#while循环的使用,注意[] 这两个符号内侧都要留有空格while [ "$start_date" -le "$end_date" ];do current_date=`date -d "$start_date" +%Y-%m-%d` echo $company ec...原创 2021-06-01 20:50:03 · 1344 阅读 · 0 评论 -
完整的Hive脚本
上线的Hivesql必须配合Shell脚本使用 ,并且将问题写入日志#!/bin/bashsource /etc/profilesource /opt/security/profiles/fbi_authenticate.sh ####业财队列if [ $# != 1 ] ; thenecho "USAGE: $0 number of parameters used: 1"echo " parameter 1: beginDate yyyyMMdd"exit 1;firpt原创 2021-05-17 11:22:29 · 1013 阅读 · 0 评论 -
Hive小文件过多
小文件产生原因hive 中的小文件肯定是向 hive 表中导入数据时产生,所以先看下向 hive 中导入数据的几种方式 直接向表中插入数据 insertintotableAvalues(1,'zhangsan',88),(2,'lisi',61);这种方式每次插入时都会产生一个文件,多次插入少量数据就会出现多个小文件,但是这种方式生产环境很少使用,可以说基本没有使用的 通过load方式加载数据 loaddatalocalinpath'/export/sco...原创 2021-04-12 15:07:18 · 872 阅读 · 0 评论 -
Hive的explain详解(二)优化
Hive作为大数据平台举足轻重的框架,以其稳定性和简单易用性也成为当前构建企业级数据仓库时使用最多的框架之一。但是如果我们只局限于会使用Hive,而不考虑性能问题,就难搭建出一个完美的数仓,所以Hive性能调优是我们大数据从业者必须掌握的技能。本文将给大家讲解Hive性能调优的一些方法及技巧。Hive性能问题排查方式当我们发现一条SQL语句执行时间过长或者不合理时,我们就要考虑对SQL进行优化,优化首先得进行问题排查,那么我们可以通过哪些方式进行排查呢。经常使用关系型数据库的同学可能知道关系原创 2021-04-12 15:03:30 · 523 阅读 · 0 评论 -
Hive的explain详解(1)
不懂hive中的explain,说明hive还没入门,学会explain,能够给我们工作中使用hive带来极大的便利!理论本节将介绍 explain 的用法及参数介绍HIVE提供了EXPLAIN命令来展示一个查询的执行计划,这个执行计划对于我们了解底层原理,hive 调优,排查数据倾斜等很有帮助使用语法如下:EXPLAIN[EXTENDED|CBO|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE]query..原创 2021-04-12 14:48:56 · 515 阅读 · 0 评论 -
Hive数据倾斜YT
如 事实表 关联 每日抽取的维表拉链表,维表中有很多重复的org_code(开链闭链)和事实表中数据关联,会造成数据倾斜。将维表的最新视图切片,每日一片,这样的话当日就只有一条数据和事实表关联。......原创 2021-03-30 13:53:57 · 315 阅读 · 0 评论 -
Hue导数
INSERT OVERWRITE DIRECTORY '/user/dbquery/data-export/big_customer_transfer-20210301' -- 指定导出目录,需自定义子目录,且子目录要求还未创建ROW FORMAT DELIMITEDFIELDS TERMINATED BY ',' -- 字段分隔符,导出CSV文件时使用',',导出TSV文件时使用'\t'COLLECTION ITEMS TERMINATED BY '|' -- 集合元素的分隔符,针对Array或Ma原创 2021-03-29 14:15:07 · 231 阅读 · 0 评论 -
Hive的ReduceJoin/MapJoin/SMBJoin
Hive中就是把Map,Reduce的Join拿过来,通过SQL来表示。参考链接:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins1.Reduce /Common/Shuffle JoinReduce Join在Hive中也叫Common Join或Shuffle Join如果两边数据量都很大,它会进行把相同key的value合在一起,正好符合我们在sql中的join,然后再去组合,如图所示。.原创 2021-03-27 10:23:33 · 643 阅读 · 1 评论 -
Hive报错问题
FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed during runtime. Please check stacktrace for the root cause.如图所见问题是:表中数据有问题原创 2021-03-24 13:16:55 · 907 阅读 · 0 评论 -
Hive表的存储格式
直接抽取过来数据量很大的表,那么肯定要存orc格式的高压缩比但是结果表要抽取出去做展示的要存为text格式,高压缩比的表解压消耗内存资源原创 2021-03-03 16:54:24 · 151 阅读 · 1 评论 -
Hive锁表问题
show locks就能查询出来所有锁住的表原创 2021-02-24 09:34:50 · 1624 阅读 · 0 评论 -
Hive的update转换
UPDATE TFROM VT_DIRECT_SHIPMENT_COST1 T ,(SELECT Start_Setl_Org_Cd ,Send_Cust_Cd ,COUNT(1) AS Cnt ,SUM(Setl_Wt) AS Tot_Wt FROM VT_DIRECT_SHIPMENT_COST1 GROUP BY 1,2)SSET Shar.原创 2021-02-02 19:37:58 · 552 阅读 · 1 评论 -
Hive迁移问题追踪
case when 得到的结果’1‘不相等原创 2021-01-26 13:12:30 · 180 阅读 · 0 评论 -
Hive的analyze
1、使用分区表,无论字段analyze TABLE td.pt_pmart_ceo_FIN_TRSF_CTR_SITE_MAP partition (dt) COMPUTE STATISTICS noscanps:一致报错的可能性在UDF函数建在了某个库下 ,只有在hue上选择某个库的时候才能用UDF2、目的见名知意,它的目的就是为了统计和分析的作用,它将统计的信息存储到metastore中,后续再来查询的时候就不需要在执行查询计算,而是直接获取即可3、范围统计信息支持新建的和.原创 2020-12-31 13:42:55 · 2473 阅读 · 0 评论 -
hive表拉链
--获取0-99WITH a AS (SELECT explode(split('0,1,2,3,4,5,6,7,8,9',',')))select cast(a1.col + 10*a2.col as int) from a a1 JOIN a a2 ON 1=1拉链表WITH a AS (SELECT explode(split('0,1,2,3,4,5,6,7,8,9',',')))SELECT t.* ,regexp_replace(d.dt_date,'-',..原创 2020-12-25 17:55:35 · 162 阅读 · 0 评论 -
Hive的partition问题
hdfs文件按日拉过来了,但是没有数据需要将数据按partition加载进入这个表alter table dim.fin_exp_dmn_org_new_temp drop if exists partition(dt='$rptDate');alter table dim.fin_exp_dmn_org_new_temp add partition (dt='$rptDate') location 'hdfs://yto-develop-bigdata-platform/user/hive/wa原创 2020-11-25 15:03:48 · 434 阅读 · 0 评论 -
Hive的tempoary table使用
规范上不允许create table as select然后使用,应该create temporary table as select,同样可以insert into进去数据在create table as select的时候,会有插入为null导致该表的数据类型为void的情况,这样这个字段就不能用了,向该表插入数据会导致UDFArgument void的错误...原创 2020-11-24 15:23:28 · 2875 阅读 · 0 评论 -
Hive的row_number无法order by多字段
FAILED SemanticException Range based Window Frame can have only 1 Sort Key一、描述 执行select *,sum(money) over(partition by userid,month order by userid asc,month asc range between 0 and 2 2 following) aa from user order by userid,month;报如下错误二、解决方法...原创 2020-10-27 15:43:29 · 2174 阅读 · 0 评论 -
Yt的Hive参数调优(Hive on Spark)
#设置这个spark任务名称set spark.app.name=fun_seamless_newGP133_qianyi_sj;#开启动态分区set hive.exec.dynamic.partition=true;#动态分区非严格模式set hive.exec.dynamic.partition.mode=nonstrict;#每个Map最大输入大小256000000是官方默认值set mapred.max.split.size=256000000;#节点中可以处理的最小的..原创 2020-10-09 13:19:20 · 528 阅读 · 0 评论 -
Hive的on不支持非等值连接解决,不支持or
--oracleSELECT a.*, b.id ASb_id, b.class AS b_classFROM lpx_test_a aLEFT OUTER JOIN lpx_test_b b ON (a.id = b.id AND a.class < b.class);连接条件的第二个是非等值的,不能照搬上面--hiveSELECT a.*, CASE WHEN a.class < b.class THEN b.idEND AS b_id, CASE WH..原创 2020-09-19 11:35:28 · 2950 阅读 · 0 评论 -
Hive的in中不能子查询,in中的多字段子查询
Error:SemanticException [Error 10249]: Line 1:146 Unsupported SubQuery Expression 'userid': Correlating expression cannot contain unqualified column references.hive查询中,这个异常想必大家经常会遇到,在hive中,in、not in 是不支持子查询的,今天来看看替代的方法先说说需求场景我们模拟的需求,从A表查询的时候,需要在结果中过.原创 2020-09-17 20:35:55 · 4792 阅读 · 0 评论