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

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

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

相关推荐
你怎么知道我是队长6 小时前
和校验(CheckSum)
学习
天下财经热6 小时前
快进商店闪耀2026中国零售业博览会,远程值守全家桶独家首发,重塑云值守解决方案
大数据·人工智能·物联网
星幻元宇VR6 小时前
VR消防安全行走平台打造真实火灾逃生体验
科技·学习·安全·vr·虚拟现实
晓梦林7 小时前
kakeru靶场学习笔记
笔记·学习
你怎么知道我是队长7 小时前
计算机系统基础23---可靠性、校验码
学习
aloha_7897 小时前
信息系统项目管理师选择题考前真题错题笔记汇总
java·笔记·学习·tomcat
nashane7 小时前
HarmonyOS 6学习:Web组件内嵌H5视频全屏“复活”指南
前端·学习·harmonyos
烟火是真的五颜六色7 小时前
《学习的意义》
学习
aloha_7897 小时前
信息系统项目管理师真题做题笔记
java·笔记·学习·软件工程·学习方法