大数据开发学习Day40

一、Linux

1. 实时监控 Spark / YARN 任务运行状态

bash 复制代码
watch -n 1 "yarn application -list | grep -i spark"

watch -n 1:每 1 秒自动刷新一次

yarn application -list:列出 YARN 上所有运行任务

grep -i spark:只看 Spark 任务

用途:实时监控离线任务是否卡住、是否正常运行

2. 统计 HDFS 上指定目录的文件总数

bash 复制代码
hdfs dfs -count /user/hive/dwd/user_behavior

快速统计目录下文件数量

用于判断是否产生大量小文件

数仓巡检、小文件合并前必查

3. 查看最近 100 行 Spark 任务异常日志

bash 复制代码
tail -n 100 /data/spark/logs/spark-app.log | grep -A 5 -B 5 Exception

tail -n 100:只看最后 100 行最新日志

grep -A 5 -B 5 Exception:抓取异常行上下 5 行上下文

生产排错最快方式

二、SQL

表结构

dwd_user_pay:用户支付表 user_id, order_id, pay_amount, pay_time, dt

dwd_app_log:APP 日志表 user_id, event_id, page_id, event_time, dt

dwd_goods_sale:商品销售表 goods_id, cate_id, sale_amount, sale_num, dt

1. 统计每个用户的累计消费金额 & 最近一次消费时间

sql 复制代码
SELECT
    user_id,
    SUM(pay_amount) AS total_pay,        -- 累计消费
    MAX(pay_time) AS last_pay_time       -- 最近一次消费时间
FROM dwd_user_pay
WHERE dt >= '2026-04-01'
GROUP BY user_id;

电商用户价值分层、会员等级评定核心指标

时间分区过滤,避免全表扫描

2. 统计每个页面的访问次数、访问人数

sql 复制代码
SELECT
    page_id,
    COUNT(*) AS pv,                      -- 页面访问次数
    COUNT(DISTINCT user_id) AS uv        -- 页面访问人数
FROM dwd_app_log
WHERE dt = '2026-05-23'
GROUP BY page_id;

最经典的 PV/UV 统计

运营分析页面热度、用户留存、转化漏斗

3. 统计每个品类下销售额最高的 3 个商品

sql 复制代码
SELECT * 
FROM (
    SELECT
        goods_id,
        cate_id,
        sale_amount,
        RANK() OVER(PARTITION BY cate_id ORDER BY sale_amount DESC) rk
    FROM dwd_goods_sale
) t 
WHERE rk <= 3;

分组内排序取 TopN,面试必考

用于商品爆款排行、品类运营分析

三、Pyspark

今日重点:PySpark 生产最常用 ------ 小文件合并实战

  • 为什么要合并小文件?
    小文件太多 → NameNode 压力巨大
    查询极慢、任务卡死、集群不稳定
    离线数仓 必须定期合并
  • 企业标准合并代码
python 复制代码
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("MergeSmallFiles").getOrCreate()

# 1. 读取需要合并的表
df = spark.read.table("dwd.user_behavior")

# 2. 减少分区 = 合并小文件(无shuffle,最快)
df = df.coalesce(10)

# 3. 覆盖写入,自动合并成 10 个文件
df.write.mode("overwrite").saveAsTable("dwd.user_behavior_new")

spark.stop()

coalesce(N):减少分区,不 shuffle,速度最快

repartition(N):会 shuffle,数据更均匀,但慢

生产优先用 coalesce 合并小文件

一般一个文件目标大小 128MB ~ 256MB

  • 生产实战参数
python 复制代码
spark.conf.set("spark.sql.adaptive.enabled", "true")
spark.conf.set("spark.sql.adaptive.coalescePartitions.enabled", "true")

开启后 Spark 自动合并小文件

四、算法

删除链表的倒数第 N 个节点

python 复制代码
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def removeNthFromEnd(head, n):
    dummy = ListNode(0, head)
    fast = slow = dummy
    
    # 快指针先走 n 步
    for _ in range(n):
        fast = fast.next
    
    # 快慢一起走
    while fast.next:
        fast = fast.next
        slow = slow.next
    
    # 删除节点
    slow.next = slow.next.next
    return dummy.next

详细思路

快慢指针,一次遍历搞定

快指针先走 N 步,然后同步走

慢指针最终停在倒数 N+1 位置

直接跳过下一个节点 = 删除
大数据用途

日志链表结构清洗、流式数据截断、内存结构优化高频思想

相关推荐
Amazing_Cacao6 小时前
CFCA精品可可产区风土体系(亚洲):彻底拒绝应试背诵,将感官复核作为检验真实物理差异的唯一铁律
学习
龙孚信息7 小时前
DXP进化论 贰-品牌出海深水区,你的数字体验基础设施跟上了吗?
大数据
kirs_ur8 小时前
SSD 在 AI 训练中的角色
大数据·服务器·人工智能
AI探索先锋9 小时前
AMD 2nm 芯片炸裂、欧洲首家人形机器人独角兽诞生、AI Agent 互联标准打响:10 条信号看懂产业变局|今日科技 AI 机器人快讯
大数据·人工智能·深度学习·搜索引擎·机器人
zzzll11119 小时前
字节 Agent 三面:讲讲 Agent 的记忆系统怎么设计?
大数据
聚焦前沿9 小时前
涡街流量计用户如何判断厂家是否靠谱
大数据·人工智能
莫名的好感°11 小时前
国内AI视频工具哪家强?FusionAI聚合即梦Seedance、可灵Kling、HappyHorse、Google Veo,一个平台看懂所有选择
大数据·人工智能
咖啡星人k12 小时前
企业内网引入 AI 编程:MonkeyCode 私有化部署思路
大数据·人工智能·私有化部署·monkeycode
caimouse12 小时前
protoc-gen-c 支持 proto3 `optional` 关键字修改记录
c语言·学习