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

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

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

相关推荐
卿卿的产品经理日记13 分钟前
【AI产品经理实战】Day 38|try-except 踩坑实录:报错是数据
人工智能·笔记·python·学习·产品经理
大大大大晴天15 分钟前
每天认识一个组件:Elasticsearch
大数据
keyipatience17 分钟前
TypeScript学习(1)
前端·javascript·学习·typescript·html·css3
Simon_lca21 分钟前
ZARA、H&M、SHEIN验厂差异全对比:一套底层记录,三套接口输出
大数据·人工智能·经验分享·科技·制造
爱喝雪碧的可乐23 分钟前
DeepSeek 崩了近5小时:一次故障扒透「单点依赖、重试风暴与大模型高可用」
大数据·人工智能·deepseek
Leo.yuan1 小时前
企业级AI分析平台技术选型:FineBI(AI原生版)的NL2BI架构与业务适配能力
大数据·人工智能
疯狂奔跑华丽跌倒1 小时前
医药行业数据治理工具选型,需匹配业务与AI落地需求
大数据·人工智能·经验分享
lazy H1 小时前
【计算机网络】第 2 篇:一条数据如何穿过网络?彻底理解数据封装与解封装
网络·经验分享·后端·学习·计算机网络
我命由我123451 小时前
软件工程概念 - 可插拔性
java·后端·学习·java-ee·系统架构·软件工程·学习方法
数据与AI工程手记2 小时前
Inmon和Kimball到底差在哪?
大数据