大数据开发学习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

思路讲解

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

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

相关推荐
XCDoris4 小时前
郴州logo设计机构
大数据·人工智能·python
物联网软硬件开发-轨物科技4 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
撩得Android一次心动5 小时前
Jetpack Compose 知识点整理2【个人用】
android·笔记·学习·kotlin·compose
zyseo85 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
dadaobusi6 小时前
学习:灵犀指令集
学习
xiaogai_gai7 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
xhyu617 小时前
【学习笔记】图像质量评估方法 (5.生成图像是否符合用户要求)
笔记·学习·计算机视觉
skywsp8 小时前
Agent智能体架构设计-知识整理
大数据·人工智能
starzy19908 小时前
KafkaProducer 加载元数据:一条 MetadataRequest 的完整旅程
大数据·kafka
内容营销专家刘鑫炜9 小时前
AI搜索实战专家刘鑫炜:做AI搜索第一步,首先得让 AI 看到你
大数据·人工智能