一、Linux
1. 批量解压当前目录所有 tar 压缩包
bash
for file in *.tar;do tar -xvf $file;done
循环遍历后缀 tar 文件,逐条执行解压命令,批量处理离线归档数据文件,省去单次解压重复操作
2. 查看 HDFS 文件写入修改时间
bash
hdfs dfs -ls -r /user/hive/dws/sale_summary
-ls -r 倒序展示文件,最新生成文件排在顶部
核查报表生成时间、判断任务是否按时产出
3. 查找包含指定关键字的所有脚本文件
bash
find ./ -name "*.sh" -exec grep -l "spark-submit" {} \;
递归检索目录下 shell 脚本,筛选出包含提交 Spark 任务语句的文件,快速定位 ETL 调度脚本
二、SQL
表结构
dwd_online_service在线客服:case_id,user_id,deal_time,reply_duration,satisfaction
dwd_financial_asset用户资产:user_id,account_balance,frozen_money,update_dt
dwd_market_promotion营销活动:act_id,goods_id,prom_discount,sell_volume,create_dt
1. 统计各时段客服平均响应时长与差评占比
sql
SELECT
hour(deal_time) deal_hour,
ROUND(AVG(reply_duration),2) avg_reply_time,
ROUND(SUM(IF(satisfaction=0,1,0))/COUNT(*),3) bad_rate
FROM dwd_online_service
WHERE deal_time BETWEEN '2026-05-01' AND '2026-05-25'
GROUP BY hour(deal_time)
ORDER BY deal_hour;
按小时划分服务时段,聚合计算平均回复耗时;条件判断统计差评比例,用于排班优化与服务质量考核
2. 计算用户可用资产与资金冻结占比
sql
SELECT
user_id,
account_balance - frozen_money usable_money,
ROUND(frozen_money/account_balance,3) frozen_ratio
FROM dwd_financial_asset
WHERE update_dt='2026-05-25';
总资产扣除冻结金额得到可用资金,计算冻结资金占比,用于金融账户风险监控、资金流动性分析
3. 筛选折扣力度最大的 5 个活动商品
sql
SELECT act_id,goods_id,prom_discount,sell_volume
FROM(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY act_id ORDER BY prom_discount DESC) rn
FROM dwd_market_promotion
)t
WHERE rn<=5;
以活动为分组维度,按折扣幅度排序,截取每组前五优惠商品,辅助运营挑选主推爆款商品
三、Pyspark
今日重点:自定义 UDF 函数开发与业务字段加工
- 适用场景
内置函数无法满足复杂逻辑计算,例如字段加密、等级判定、文本格式转换等自定义业务规则处理 - 完整实操代码
python
from pyspark.sql import SparkSession
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType
spark = SparkSession.builder.appName("UdfDemo").getOrCreate()
# 模拟用户数据
user_df = spark.createDataFrame([
("u001", 28, 6800),
("u002", 35, 12500),
("u003", 22, 3200)
],["user_id","age","month_income"])
# 定义自定义逻辑:收入等级划分
def income_level(income):
if income < 5000:
return "低收入"
elif income < 10000:
return "中等收入"
else:
return "高收入"
# 注册UDF
income_udf = udf(income_level, StringType)
# 调用UDF生成新字段
result_df = user_df.withColumn("income_tag", income_udf("month_income"))
result_df.show()
spark.stop()
-
核心知识点讲解
udf() 封装自定义 Python 函数,绑定返回值数据类型
配合withColumn新增加工字段,灵活拓展业务逻辑
注意:UDF 执行性能弱于原生函数,大批量数据优先优先内置算子
-
优化补充
python
# 启用向量化UDF,提升海量数据处理速度
spark.conf.set("spark.sql.execution.pythonUDF.arrow.enabled","true")
四、算法
二叉树的最大深度
python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def maxDepth(root):
if not root:
return 0
left_depth = maxDepth(root.left)
right_depth = maxDepth(root.right)
return max(left_depth, right_depth) + 1
思路讲解
递归遍历左右子树,分别求取深度,取最大值叠加根节点层数。
大数据场景可用于树形分类数据层级统计、目录层级深度计算