Vol.04 Hive / Spark 如何避免单节点全局排序? 最近因为经常对接模型算法,营销模型的一个应用场景是:按照模型打分取 TOPN 用户进行营销投放,由此就会产生一个全局排序的场景:在用户量过亿的情况下,单点全局排序极其容易出现 OOM。经历了几次线上事故之后,决心要彻底解决这个问题,跟同事请教了下,可以通过 “加盐打散” 来解决这个问题。 加盐打散产生全局排序的原因就是因为所有的 key 都需要互相比较才能产生全局排序序号,加盐打散的思路就是:通 2023-01-02 日常工作 #Hive #Spark #周更挑战
Vol.03 数据开发当中如何验证数据结果准确性 前言说明数据开发日常工作经常需要跟业务方核验数据,校验数据源、业务逻辑是否准确。这里的数据准确性跟 ETL 中的“精确一次性语义” 保证数据不丢失不重复不一样,说的是数据报表或者用户标签特征是否符合既定业务逻辑。 以我浅薄的经验来说,验证数据准确性主要从:明细数据逻辑验证、业务逻辑验证、白盒测试这 3 个角度去做。 通过明细数据从逻辑上做数据验证通常一个数据报表逻辑都会相对复杂,多个表关联是一定 2022-12-25 日常工作 #Spark #周更挑战
Vol.02 推荐下今天发现的几个cheatsheet 今天发现了一个神奇的东西,名字叫 Cheat Sheet,就是各种语言工具的快捷键列表,这个对于我这样记不住各种东西的菜鸟帮助太大了,平时边用边记。 老年跟菜鸟的区别可能就是你对各种工具快捷键的熟悉程度。记录下常用的几个,纳入自己工作流当中。 Python 语言(有中文且也有其他工具语言的) https://cheatography.com/simpleapples/cheat-sheets 2022-12-18 日常工作 #Shell #Linux #周更挑战 #Python
Vol.01 什么是新怪谈—从《鼠王》开始说 频繁在机核的播客里被安利《鼠王》,忘记哪一期节目,介绍了《美国众神》的作者尼尔盖曼作品,就提到通俗奇幻小说的发展史。目前的这类奇幻类小说主要分三类:旧时代民间传说、克苏鲁世界、新怪谈,当然还有史蒂芬金自己独特的体系,不在讨论范围之内。当时就很好奇,为啥新怪谈叫新怪谈,新在哪里。最近机核上了鼠王有声书版本,听音频书容易分神,趁着热度火速去读了鼠王。 “怪”是理所当然感觉新怪谈第一个特点就是“怪谈 2022-12-11 阅读 #周更挑战 #读书
高效年轻人的7个办公习惯 偶然在即刻上看到飞书的 ZARA 分享了这篇小文章,高效年轻人的 7 个办公习惯,都是我目前所欠缺和需要学习的,至少我现在‘elevator list’ 就没有做到,经常是口头表达,而不是先准备好问题和资料。 如果 leader 布置了一个任务,做到30%的时候先问老板方向对不对,不要憋大招。定期主动跟需求方同步进展,不要等到被问/被催。周报上写“进展”而不是“动作”。“跟xx开会讨论xx事项” 2022-04-10 工作记录 #项目管理
SQLBoy日常工作技巧 入职新工作三周了,虽然还处理 SQLBoy 阶段,但是学习到了非常多小技巧,有必要记录一下,持续更新,避免遗忘。 规范需求记录,脚本备份,文档归类,代码片段,数字字典 封装公共参数和大数据脚本执行参数到脚本当中,执行脚本只需要引入变量 每一种 SQL 脚本方式封装一个方法,固定脚本执行格式 SQL 中空值和 null 同时过滤:字段 > ‘’ 历史数据回溯,通过封装脚本传参调用执行脚本进行 2022-02-09 工作记录 #Shell #Hive #SQL #Spark
开发环境准备 最近换了 M1 MBP,新电脑开发环境需要从头部署,汇总一下我开发环境常用的工具吧。 环境支持 资源下载 下载 JDK 1.8 下载 Scala 2.11.12 安装说明 win10下jdk1.8安装和环境变量的配置 scala安装教程及简单配置 开发工具 IDEA -- 插件 Cosy Java Coding Atom Material Icons PDF Viewer Rainbow 2022-01-20 日常工作 #规划
SQL中的行转列和列转行 MySQL 的行转列case when + group by + max/sum 函数 MySQL 的列转行select 指定语句 + union 拼接即可 union 去重 union all 不去重 FLink 中 union 不去重,相当于 SQL中的 union all Hive 行转列# 基本思路:列拼接输出 # 涉及函数 concat(str1,str2,...) # 字段或 2021-06-22 日常工作 #SQL #MySQL
Awk和Shell awk格式 awk [选项参数] 'script' var=value file(s) 基本语法 $0 代表整个文本行 $1 代表文本行中的第 1 个数据字段 printf 打印输出 默认每行按空格或TAB分割,使用$n来获取段号 段连接符OFS awk '{OFS="#"}{print $1,$2,$3}& 2021-06-10 存档 #Shell
hive性能优化 基础优化 Shuffle 阶段压缩 hive的数据压缩 Snappy hive的数据存储格式 ORC TextFile fetch抓取 本地模式 join的优化 小表在前,小表放入缓冲区 谓词下推,先过滤再 join SQL优化的方案 列裁剪 分区裁剪 group by 优化 count(distinct)优化 动态分区调整 并行编译执行 严格模式 拒绝可能影响效率的 SQL 语句 2021-05-20 数据仓库 #Hive