当前位置: 首页 > article >正文

尚硅谷大数据项目电商数仓6.0学习记录----数据仓库(中)

1. ODS层数据装载与自动化调度实战在电商数仓项目中ODS层作为数据仓库的第一站承担着原始数据的蓄水池角色。我遇到过不少新手在数据装载环节踩坑最常见的问题就是手动执行SQL导致数据不一致。这里分享一个真实案例某次大促期间由于手动执行漏掉了分区字段导致后续所有报表数据错乱团队花了整整两天时间回滚数据。自动化装载脚本是解决这类问题的银弹。以日志表为例我们通常会编写Shell脚本封装HiveQL命令。下面这个脚本模板经过多个项目验证可以直接套用#!/bin/bash APPgmall if [ -n $1 ]; then do_date$1 else do_date$(date -d -1 day %F) fi echo 开始装载 $do_date 日志数据 hive -e SET hive.exec.dynamic.partition.modenonstrict; LOAD DATA INPATH /origin_data/$APP/log/topic_log/$do_date INTO TABLE ${APP}.ods_log_inc PARTITION(dt$do_date); 这个脚本有三个关键设计点支持手动传入日期参数也支持自动取前一天动态分区模式确保分区字段自动匹配明确的执行日志输出便于问题排查调度系统集成建议使用Azkaban或Airflow。在最近一个项目中我们这样配置Azkaban的调度流程每天00:30自动触发前置依赖HDFS数据就绪检查失败自动重试3次执行结果自动邮件通知对于增量表同步Maxwell的初始化操作需要特别注意。有次我忘记清空bootstrap表导致数据重复后来养成了写检查脚本的习惯-- Maxwell状态检查脚本 SELECT COUNT(*) FROM maxwell.positions WHERE client_idgmall;2. DWD层维度建模核心方法论维度建模是数据仓库的灵魂但很多开发者容易陷入理论陷阱。我总结了一套32实战法则3个设计原则2个验证方法。事实表设计要抓住三个关键点粒度选择比如订单事实表应该到sku级别而非订单头级别度量确定数值型字段要明确计算规则sum/count/avg退化维度常用描述字段直接冗余减少关联开销以电商订单为例典型的建表语句应该是这样CREATE TABLE dwd_order_detail ( id STRING COMMENT 订单明细ID, order_id STRING COMMENT 订单ID, sku_id STRING COMMENT 商品ID, user_id STRING COMMENT 用户ID, province_id STRING COMMENT 省份ID, activity_id STRING COMMENT 活动ID, coupon_id STRING COMMENT 优惠券ID, create_time TIMESTAMP COMMENT 创建时间, source_type STRING COMMENT 来源类型, source_id STRING COMMENT 来源ID, sku_num BIGINT COMMENT 商品数量, original_amount DECIMAL(16,2) COMMENT 原价, final_amount DECIMAL(16,2) COMMENT 实付金额 ) COMMENT 订单明细事实表 PARTITIONED BY (dt STRING) STORED AS PARQUET;维度表设计的坑更多。去年我们有个项目用户维度表竟然没有做缓慢变化维处理导致历史数据分析完全失真。正确的SCD2方案应该是CREATE TABLE dwd_user_info ( id STRING COMMENT 用户ID, name STRING COMMENT 姓名, gender STRING COMMENT 性别, birthday STRING COMMENT 生日, email STRING COMMENT 邮箱, user_level STRING COMMENT 用户等级, start_date STRING COMMENT 生效日期, end_date STRING COMMENT 失效日期 ) COMMENT 用户维度表 STORED AS PARQUET;验证模型是否合理我常用两种方法数据密度检查执行ANALYZE TABLE计算统计信息确保字段基数合理查询测试用典型分析场景SQL验证关联效率3. Spark on Hive高效数据处理技巧当数据量超过1TB时Hive MapReduce引擎就显得力不从心。最近帮客户优化一个千万级订单表关联改用Spark后耗时从45分钟降到3分钟。关键配置如下Spark执行引擎配置需要特别注意这些参数!-- hive-site.xml关键配置 -- property namehive.execution.engine/name valuespark/value /property property namespark.master/name valueyarn/value /property property namespark.executor.memory/name value4g/value /property property namespark.driver.memory/name value2g/value /property数据倾斜处理是Spark调优的重点。上周刚解决一个用户行为分析任务卡在99%的问题采用的分治方案-- 倾斜键单独处理 WITH skewed_users AS ( SELECT * FROM dwd_user_behavior WHERE user_id IN (12345,67890) -- 倾斜值 ), normal_users AS ( SELECT * FROM dwd_user_behavior WHERE user_id NOT IN (12345,67890) ) -- 分别处理后再合并 SELECT * FROM normal_users JOIN dim_user USING(user_id) UNION ALL SELECT * FROM skewed_users JOIN dim_user USING(user_id)小文件合并也是常见痛点。我们团队开发的自动合并脚本# 每天凌晨合并前一天分区小文件 spark.sql( ALTER TABLE dwd_order_detail PARTITION(dt${do_date}) CONCATENATE )4. 完整数据加工流水线示例结合某电商大促实战分享从ODS到DWD的完整处理流程日志数据ETL流程原始日志装载到ODS解析JSON公共字段展开动作数组炸裂关联维度获取中文描述INSERT INTO TABLE dwd_page_log PARTITION(dt2023-11-11) SELECT common.ar, common.ba, get_dim_name(channel, common.ch) AS channel_name, page.page_id, page.last_page_id, explode(actions) AS action FROM ods_log_inc LATERAL VIEW json_tuple(common, ar, ba, ch) t AS ar, ba, ch LATERAL VIEW json_tuple(page, page_id, last_page_id) p AS page_id, last_page_id LATERAL VIEW explode(actions) a AS actions WHERE dt2023-11-11;业务数据清洗要点空值处理COALESCE(field, 未知)编码转换CASE WHEN gender1 THEN 男 ELSE 女 END时间格式化FROM_UNIXTIME(ts/1000)枚举值校验确保status在(1,2,3)范围内质量检查脚本必不可少#!/bin/bash # 数据量检查 count$(hive -e SELECT COUNT(*) FROM dwd_order_detail WHERE dt$do_date) if [ $count -lt 1000 ]; then echo 数据量异常: $count | mail -s 数据告警 teamexample.com fi # 重要字段空值率检查 null_rate$(hive -e SELECT SUM(CASE WHEN user_id IS NULL THEN 1 ELSE 0 END)/COUNT(*) FROM dwd_order_detail WHERE dt$do_date) if (( $(echo $null_rate 0.05 | bc -l) )); then echo 空值率超标: $null_rate | mail -s 数据告警 teamexample.com fi在最近的双十一项目中这套流程每天处理20亿日志和千万级订单数据从数据产生到可分析状态延迟控制在15分钟内。关键是把每个环节都做成原子操作通过调度系统串联起来任何环节失败都能快速定位和重试。

相关文章:

尚硅谷大数据项目电商数仓6.0学习记录----数据仓库(中)

1. ODS层数据装载与自动化调度实战 在电商数仓项目中,ODS层作为数据仓库的第一站,承担着原始数据的"蓄水池"角色。我遇到过不少新手在数据装载环节踩坑,最常见的问题就是手动执行SQL导致数据不一致。这里分享一个真实案例&#xf…...

STM32高精度定时器(HRTIM1)实现倍频、定时器触发采样

STM32高精度定时器(HRTIM1):精准定时与同步触发的强大引擎在嵌入式系统开发中,尤其是在数字电源、电机控制、照明及各类高精度PWM应用领域,定时器的精度和灵活性往往成为系统性能的关键瓶颈。STM32系列微控制器内置的高…...

C复习13(排序算法)

#技术笔记1.冒泡排序这个排序要能自己直接敲出来,由于每一轮有交换,导致数据就像冒泡泡一样,冒到数组的末尾,所以叫做冒泡排序。冒泡排序稳定,时间复杂度O(n^2),空间复杂度O(1) (这里就给出一种代码,从小到大的排序顺序冒了,后面都是按从小到…...

mysql5.7的rownumber写法

db2中的语句select * from ( select rownumber() over (order by a.stdcno) as num , a.id ,b.cuno from t1 a ,t2 b where a.id b.id ) as Amysql5.7中的语句select cast(row_num : row_num 1 as char) AS num , A.* from (select row_num :0) r,( select a.id, b.cuno fro…...

新概念英语第一册141_Sally s first train ride

Lesson 141: Sally’s first train ride 萨莉第一次乘火车旅行 Watch the story and answer the question Why was the mother embarrassed? Because Sally said the middle-aged lady was ugly.Key words and expressions excited 兴奋的get on 登上middle-age…...

为什么越来越多工程师选择英飞凌芯片?优势分析

作为一名在嵌入式硬件领域从业多年的工程师,我经常被问到这样一个问题:“英飞凌芯片好不好?值不值得在项目中优先考虑?”说实话,前几年我对这个问题还有些犹豫,但近几年随着项目经验的积累,尤其…...

昆仑通态屏幕制作(进阶篇)---动态交互设计(滑块控制与状态反馈)

1. 滑块控制的动态联动实现 在工业控制场景中,滑块是最直观的交互控件之一。昆仑通态屏幕的滑块控制功能,可以实现对设备参数的精细调节。比如控制电机转速、调节温度设定值等场景,都需要滑块输入与其他显示元素的动态联动。 1.1 滑块与进度…...

Blender 3MF插件终极指南:5步实现3D打印工作流优化

Blender 3MF插件终极指南:5步实现3D打印工作流优化 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender3mfFormat插件是Blender生态系统中专为3D打印工作流…...

相机照片详细参数怎么修改?4款工具,新手零失误

拍好的照片参数不对真的很糟心!要么光圈显示错了,要么ISO、焦距乱标,相机型号还可能被搞错。想改却找不到简单的工具,要么软件太复杂,要么改完参数不生效,甚至把原图画质搞坏了。其实用对工具超简单&#x…...

如何修改图片的exif信息?6款工具,新手也能秒会

一、什么是EXIF信息?为什么要修改?EXIF信息就像图片的"身份证",记录着拍摄时的详细数据,比如相机型号、拍摄时间、GPS位置、光圈快门等参数。平时发朋友圈、传文件时,如果不注意这些信息,可能会不…...

打造你的私人游戏云:Sunshine串流服务器从零到精通

打造你的私人游戏云:Sunshine串流服务器从零到精通 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为游戏设备限制而烦恼吗?想在任何地方都能畅玩你的P…...

874653

867453...

sdu软件学院创新实训(三)

基于lx同学构建的原型系统,进行了两次迭代 原型系统情况 队友搭建起了基本的后端springboot和langchain4j框架,以及小程序前端。 实现了对大模型的基本调用问答。完成milvus向量数据库的连接。 待解决的问题: 原型系统出于测试,显…...

“怪奇物语物流假设”:当交通被转移到另一个世界

在《怪奇物语》中,颠倒世界作为现实世界的镜像维度,始终以一种危险而不可控的形式存在:它与现实重叠,却又充满腐败与入侵性。然而,如果暂时搁置这种叙事中的恐怖属性,我们可以提出一个反直觉的问题——如果…...

HTML----列表与表格

一、列表标签1.<ul>:无序列表标签&#xff0c;用来放没有先后顺序的并列内容2.<ol>:有序列表标签&#xff0c;用来存放有明确先后顺序的步骤内容3.<li>:列表项&#xff0c;不管是<ul>还是<ol>里面都只能放.<li>&#xff0c;不能直接写文字…...

ffmpeg的安装与配置

一、ffmpeg简介FFmpeg 是一套开源、免费且功能极其强大的跨平台音视频处理框架&#xff0c;在业界被广泛誉为“音视频处理的瑞士军刀”。无论你是想进行简单的格式转换&#xff0c;还是开发复杂的流媒体服务&#xff0c;FFmpeg 都是目前最核心的底层工具。以下是关于它的核心简…...

毕业设计实战-PyQt5-YOLOv8-鱼类尺寸智能测量系统,融合OpenCV图像处理与Modbus工业通信

1. 项目背景与应用场景 水产养殖行业一直面临着鱼类生长监测的难题。传统的人工测量方法不仅效率低下&#xff0c;而且容易对鱼群造成应激反应。我在参与某大型养殖场智能化改造项目时&#xff0c;就亲眼见过工人需要每天抽样捞鱼测量的场景——既费时费力&#xff0c;测量数据…...

工业AI实战:如何用Python+UNet打造轨道缺陷智能检测系统

工业AI实战&#xff1a;PythonUNet构建高精度轨道缺陷检测系统 在轨道交通运维领域&#xff0c;肉眼检测钢轨表面缺陷的传统方式正被AI技术革新。这套基于UNet的智能检测系统&#xff0c;能在毫秒级完成裂缝、剥落等缺陷的定位与分类&#xff0c;准确率超越人工检测3倍以上。我…...

如何高效使用智能清理工具:Windows Cleaner完整操作指南

如何高效使用智能清理工具&#xff1a;Windows Cleaner完整操作指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为电脑C盘爆红而焦虑吗&#xff1f;Windo…...

3步解锁网易云加密音乐:ncmdump实战解密指南

3步解锁网易云加密音乐&#xff1a;ncmdump实战解密指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的歌曲只能在特定客户端播放而烦恼吗&#xff1f;当你想要在车载音响、专业音频软件或跨设备上欣赏音乐时…...

RAG系统必看!混合检索、关键词、语义一次讲清,生产级方案选型指南

本文深入探讨了RAG系统中检索层的核心重要性&#xff0c;对比了语义检索、关键词检索和混合检索三种方式的特点与适用场景。指出单一检索方式存在致命盲区&#xff0c;生产级RAG必须采用混合检索。文章详细解析了关键词检索的两种技术路线&#xff08;稀疏向量和全文索引&#…...

三月七小助手:5步掌握崩坏星穹铁道全自动游戏助手终极指南

三月七小助手&#xff1a;5步掌握崩坏星穹铁道全自动游戏助手终极指南 【免费下载链接】March7thAssistant 崩坏&#xff1a;星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 你是否厌倦了每天重复的清体力、做日常、领奖励…...

彻底禁用Windows安全警告弹窗:组策略与命令行的终极指南

1. 为什么Windows总弹出安全警告&#xff1f; 每次双击下载的exe文件时&#xff0c;那个黄底黑字的警告框就像个尽职的保安&#xff0c;非要问你"确定要开门吗&#xff1f;"。我帮客户维护服务器时&#xff0c;发现这个设计本意是好的——防止恶意脚本自动运行。但当…...

湿敏电阻HR202的两种驱动方案实测:IO充放电法 vs. 交流方波AD采样,哪个更适合你的项目?

湿敏电阻HR202驱动方案深度评测&#xff1a;IO充放电法与交流方波AD采样的实战抉择 在物联网设备与智能家居快速普及的今天&#xff0c;环境湿度监测已成为许多项目的标配功能。面对市场上动辄数十元的数字式温湿度模块&#xff0c;越来越多的工程师开始关注成本仅需几元钱的湿…...

实战指南(一)易语言与大漠插件:从零打造自动化脚本的避坑手册

1. 易语言与大漠插件入门指南 第一次接触易语言和大漠插件时&#xff0c;我完全被它们的强大功能震撼到了。易语言作为一款中文编程工具&#xff0c;对新手特别友好&#xff0c;而大漠插件则是自动化脚本开发的利器。记得刚开始学习时&#xff0c;我花了一整天时间才成功调通第…...

蓝牙耳机连接背后的秘密:SDP协议在A2DP配对中的关键作用

蓝牙耳机连接背后的秘密&#xff1a;SDP协议在A2DP配对中的关键作用 每次打开蓝牙耳机&#xff0c;手机总能自动识别并恢复上次的音量设置和播放控制——这种无缝体验背后&#xff0c;隐藏着一套精妙的协议对话机制。就像餐厅老顾客无需重复点单&#xff0c;蓝牙设备间的"…...

SVG、XML 及其生态技术全景指南:从基础规范到工程实践

XML&#xff08;Extensible Markup Language&#xff09;并非单一工具&#xff0c;而是一套可扩展的元语言规范&#xff0c;其核心价值在于定义结构化数据的语法框架。 基于 XML 的各类应用标准&#xff08;XML-based applications&#xff09;在 Web、出版、科学计算、工业控…...

从GKCTF 2021 CheckBot看CSRF攻击的实战应用

1. CSRF攻击初探&#xff1a;从CheckBot题目说起 第一次看到GKCTF 2021的CheckBot题目时&#xff0c;我眼前一亮——这简直是个教科书级的CSRF实战案例。题目设计得很巧妙&#xff1a;你需要让一个自动化的bot&#xff08;可以理解为模拟管理员行为的程序&#xff09;点击你构造…...

利用Kali与Seeker实现位置追踪:技术原理与防范策略

1. Kali与Seeker位置追踪技术揭秘 你可能听说过黑客能通过一个链接获取你的精确位置&#xff0c;听起来像电影情节对吧&#xff1f;但实际上&#xff0c;这种技术门槛比想象中低得多。我去年在安全测试中就曾用Kali Linux配合Seeker工具&#xff0c;成功复现了这种位置追踪攻击…...

免费获取米哈游游戏字体:11款架空文字完整安装指南

免费获取米哈游游戏字体&#xff1a;11款架空文字完整安装指南 【免费下载链接】HoYo-Glyphs Constructed scripts by HoYoverse 米哈游的架空文字 项目地址: https://gitcode.com/gh_mirrors/ho/HoYo-Glyphs 想要为你的设计作品注入米哈游游戏的独特魅力吗&#xff1f;…...