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

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

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

相关推荐
AI_yangxi几秒前
短视频矩阵系统供应商
大数据·人工智能·矩阵
YM52e4 分钟前
鸿蒙PC ArkTS 异常处理深度解析与最佳实践
学习·华为·harmonyos
qeen879 分钟前
【C++】类与对象之零散知识点补充(四)
c++·笔记·学习·语法
段一凡-华北理工大学12 分钟前
LangChain框架在高炉炼铁智能化领域的应用~系列文章02:从Prompt开始,让大模型听懂高炉的“黑话“
大数据·人工智能·学习·架构·langchain·prompt·高炉炼铁
真上帝的左手13 分钟前
19. 大数据-数据治理-数据标准
大数据·数据分析
伶俜6622 分钟前
鸿蒙原生应用实战(七)ArkUI 文件管理器:目录浏览 + 文件操作 + 搜索筛选
学习·华为·harmonyos
hunterkkk(c++)33 分钟前
二分图的学习
学习
Haibakeji34 分钟前
长沙定制开发教育APP哪家软件公司强
大数据·人工智能
一生了无挂38 分钟前
深度解析Token、RAG与Agent的层级逻辑、协作关系及落地价值
大数据·人工智能
徐子元竟然被占了!!1 小时前
Git学习
git·学习·elasticsearch