大数据开发学习Day41

一、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

思路讲解

递归遍历左右子树,分别求取深度,取最大值叠加根节点层数。

大数据场景可用于树形分类数据层级统计、目录层级深度计算

相关推荐
星夜夏空997 小时前
STM32单片机学习(27) —— SPI相关概念
stm32·单片机·学习
z200509307 小时前
【linux学习】linux下进程状态和环境变量的解析
linux·运维·学习
humors2217 小时前
面对暴力伤害时的自我保护指南
大数据·程序人生
2601_959477917 小时前
Vatee:从技术架构看平台运行稳定性
大数据·人工智能·安全
翼龙云_cloud7 小时前
云服务器代理商:2026 年 OpenAI 智能体平台全解析 从 GPT-5.5 到 Enterprise Agent
大数据·人工智能·gpt·云计算·ai智能体
电商API_180079052477 小时前
价格波动预警|用API实时监控淘宝京东商品价格,实现自动化竞品调价与捡漏
大数据·运维·数据库·人工智能·数据挖掘·自动化
lunzi_08267 小时前
【学习笔记】《Python编程 从入门到实践》第1章:Python环境搭建与Hello World(完整版)
笔记·python·学习
Mangguo52087 小时前
仓储管理的“不可能三角”:如何用软件打破效率天花板?
大数据
LT10157974447 小时前
2026年性能测试平台报告生成:专业可视化与合规适配指南
大数据·数据库·人工智能