一、Linux
1. 批量统计当前目录下各类文件数量
ls-l|awk'{print $5,$9}'|sort|uniq-cls -l 列出文件详细属性
awk 截取文件大小与文件名
uniq -c 去重统计同类文件数目
实战用途:统计日志、数据文件数量,快速盘点 HDFS 本地缓存文件
2. 清空大日志文件不删文件(业务在线必备)
>/opt/hadoop/logs/hadoop-rm.log直接清空内容,保留文件句柄,服务不用重启
禁止生产直接rm删运行中日志,极易导致进程异常
常用于 YARN、Spark 运行日志快速瘦身
3. HDFS 查看文件块存储位置
hdfsfsck/user/hive/dwd/order.db-files-blocks-locations查看 HDFS 文件切块数量、副本数、存储节点
排查数据块损坏、副本丢失、存储不均衡问题
集群运维数据完整性巡检常用命令
二、SQL
表说明
dwd_user_login 用户登录表:user_id,login_time,login_ip,device_type,dt
dwd_sales_goods 商品销售表:goods_id,sale_num,sale_price,sale_time,shop_id
dwd_user_coupon 用户优惠券表:user_id,coupon_id,get_time,use_time,status
1. 统计每个用户最近 3 次登录时间
SELECTuser_id,login_time,rnFROM(SELECTuser_id,login_time,ROW_NUMBER()OVER(PARTITIONBYuser_idORDERBYlogin_timeDESC)rnFROMdwd_user_login)tWHERErn<=3;按用户分组,登录时间倒序排序
行号越小代表登录时间越近
筛选行号≤3,取出最近三次登录记录
用途:用户行为溯源、异常登录风险排查
2. 计算店铺商品销售额与客单价
SELECTshop_id,SUM(sale_num*sale_price)total_sale,AVG(sale_price)avg_priceFROMdwd_sales_goodsGROUPBYshop_idORDERBYtotal_saleDESC;单商品销售额 = 销量 * 单价
聚合求和得到店铺总销售额
AVG 求平均售价即店铺客单价
电商店铺营收排行、经营分析核心 SQL
3. 统计领取未使用、已使用、过期优惠券数量
SELECTCOUNT(CASEWHENstatus=1THENcoupon_idEND)get_not_use,COUNT(CASEWHENstatus=2THENcoupon_idEND)used_coupon,COUNT(CASEWHENstatus=3THENcoupon_idEND)expire_couponFROMdwd_user_couponWHEREdtBETWEEN'2026-05-01'AND'2026-05-20';status=1 已领取未使用;2 已使用;3 已过期
用CASE WHEN行转列分类统计
限定时间范围分区过滤,提升查询效率
营销活动优惠券核销数据分析专用
三、Pyspark
今日重点:PySpark 广播变量实战 + 大表小表 JOIN 最优方案
- 适用场景
一张超大业务表 + 一张小维度配置表关联
维度表数据量小(字典表、地区表、品类映射表)
直接 JOIN 产生大量 Shuffle,任务运行缓慢 - 核心原理
把小维度表广播分发到所有 Executor 节点
每个计算节点本地持有全量小表数据,无需跨节点拉取数据
彻底消除 Shuffle,极速完成关联 - 完整可运行代码 + 注释
frompyspark.sqlimportSparkSessionfrompyspark.sql.functionsimportbroadcast spark=SparkSession.builder.appName("BroadcastJoin").getOrCreate()# 1. 读取超大用户行为明细表big_behavior_df=spark.read.parquet("/user/hive/dwd/user_behavior")# 2. 读取极小维度映射表(地区编码-地区名称)small_area_df=spark.read.csv("/data/area_code_map.csv",header=True)# 3. 广播小表进行关联(企业标准写法)result_df=big_behavior_df.join(broadcast(small_area_df),big_behavior_df.area_code==small_area_df.area_code,how="left")result_df.show()spark.stop()详细优势
零 Shuffle 过程,执行速度提升数倍
极大减少集群磁盘 IO 与网络传输
维度表更新直接替换文件即可,业务无感知
数仓分层 DWD 层关联维度表标配写法使用禁忌 & 避坑
禁止广播大表,会造成 Executor 内存爆满 OOM
默认广播阈值:10MB 以内自动广播,可手动调整
多张小表关联,全部统一加broadcast()包裹
spark.conf.set("spark.sql.autoBroadcastJoinThreshold",20971520)- 面试必背
大表 JOIN 小表 → 广播 Join(最优)
大表 JOIN 大表 → 优化分区 + 调整 Shuffle 并行度
倾斜大表 JOIN → 加盐打散 + 广播组合使用
四、算法
这里是引用
有效的括号
defisValid(s:str)->bool:stack=[]dic={')':'(',']':'[','}':'{'}forcharins:ifcharindic.values():stack.append(char)else:ifnotstackorstack.pop()!=dic[char]:returnFalsereturnlen(stack)==0思路精讲
利用栈先进后出特性匹配括号
字典存储右括号对应左括号映射关系
遍历字符,左括号入栈
遇到右括号弹出栈顶比对,不一致直接判定无效
遍历结束栈为空代表全部匹配完成
大数据实战用途
日志 JSON 字符串格式校验
复杂嵌套字段数据合法性校验
数据清洗规则校验高频栈思想