一、Linux
1. 查看系统所有 CPU 核心使用率(排查 CPU 打满)
bash
mpstat -P ALL 1 1
查看每一颗 CPU 核心使用率,精准判断是否 CPU 瓶颈
Spark/Flink 任务跑慢、集群卡顿第一排查命令
生产定位任务资源瓶颈必备
2. 批量替换目录下所有文件中的指定字符串
bash
sed -i "s/old_str/new_str/g" /opt/etl/*.sh
批量替换脚本里的旧字符串 → 新字符串
用于批量更新配置、路径、账号信息
ETL 脚本批量维护神器
3. 查看 HDFS 存储容量、使用率、剩余空间
bash
hdfs dfs -df -h
查看集群总容量、已用、可用空间
数仓日常巡检、磁盘预警、扩容评估必备
二、SQL
表结构
dwd_user_sign:用户签到表 user_id, sign_time, dt
dwd_order_refund:订单退款表 order_id, user_id, refund_amt, refund_time, dt
dwd_car_track:车联网轨迹表 car_id, speed, longitude, latitude, dt
1. 统计用户连续签到天数(面试高频)
sql
SELECT
user_id,
MAX(continue_days) AS max_sign_days
FROM (
SELECT
user_id,
COUNT(*) AS continue_days
FROM (
SELECT
user_id,
date_sub(sign_time, ROW_NUMBER()OVER(PARTITION BY user_id ORDER BY sign_time)) AS grp
FROM dwd_user_sign
) t1
GROUP BY user_id, grp
) t2
GROUP BY user_id;
连续行为经典分组算法
用于会员活跃度、奖励发放、用户留存
2. 统计每日退款金额、退款订单数、退款率
sql
SELECT
dt,
COUNT(DISTINCT order_id) AS refund_cnt,
SUM(refund_amt) AS refund_total,
ROUND(SUM(refund_amt)/SUM(order_amt),4) AS refund_rate
FROM dwd_order_refund
GROUP BY dt;
交易健康度核心指标
电商 / 金融每日必看监控报表
3. 统计车辆最高速度、平均速度、行驶次数
sql
SELECT
car_id,
MAX(speed) AS max_speed,
ROUND(AVG(speed),2) AS avg_speed,
COUNT(*) AS drive_times
FROM dwd_car_track
WHERE dt = '2026-05-27'
GROUP BY car_id;
物联网车联网标准统计 SQL
用于驾驶行为分析、车辆监控
三、Pyspark
今日重点:PySpark Shuffle 并行度调优(生产任务提速核心)
- 为什么要调?
默认并行度太低 → 任务跑超慢
并行度太高 → 小文件爆炸、CPU 飙升
正确设置 = 任务快 + 集群稳 - 企业实战最优配置
python
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("ShuffleTuning") \
.config("spark.sql.adaptive.enabled", "true") \
.config("spark.sql.adaptive.coalescePartitions.enabled", "true") \
.config("spark.sql.shuffle.partitions", "24") \
.config("spark.default.parallelism", "24") \
.config("spark.executor.memory", "8g") \
.config("spark.executor.cores", "4") \
.getOrCreate()
- 超详细讲解
spark.sql.shuffle.partitions:Shuffle 并行度,默认 200,生产一般设 24~64
spark.default.parallelism:RDD 并行度,和上面保持一致
AQE 自适应:自动合并小文件、自动优化倾斜
这是离线数仓项目标准配置,直接提升速度 2~5 倍 - 生产最佳实践
小表:10~20 个分区
中表:20~40 个分区
大表:40~80 个分区
千万不要用默认 200,会产生大量小文件
四、算法
只出现一次的数字
python
def singleNumber(nums):
res = 0
for num in nums:
res ^= num
return res
思路讲解
异或运算:相同为 0,不同为 1
遍历一遍即可找到唯一不重复数字
时间 O (n),空间 O (1),最优解
大数据用途海量日志去重、唯一用户识别、异常行为检测