大数据开发学习Day43

一、Linux

1. 实时查看磁盘读写速度(排查集群 IO 瓶颈)

bash 复制代码
iostat -d -x 1 3

iostat:查看磁盘 IO 性能工具

-d:只看磁盘统计

-x:展示扩展统计信息

1 3:每 1 秒刷新一次,共输出 3 次

用途:Spark/Flink 任务跑慢、HDFS 卡顿,优先排查磁盘 IO

2. 按内存排序,显示所有 Java 进程(定位 Spark/YARN)

bash 复制代码
ps -ef | grep java | grep -v grep | sort -k 4 -r | head -10

筛选所有 Java 进程(Spark、YARN、Hive 都是 Java 进程)

按第 4 列(内存)降序排序

展示占用内存最高的前 10 个

生产必用:快速定位耗内存的大数据任务

3. HDFS 安全模式查看与强制退出

bash 复制代码
hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode leave

安全模式开启时无法写入数据,只能读

集群重启、块修复时会自动进入安全模式

任务写 HDFS 失败时,先检查安全模式

二、SQL

表结构

dwd_user_visit:用户访问表 user_id, session_id, visit_time, channel, dt

dwd_trade_order:交易订单表 order_id, user_id, order_amt, pay_status, dt

dwd_device_error:设备错误日志 device_id, error_type, error_time, city, dt

1. 统计每个用户的访问会话次数 & 最后访问渠道

sql 复制代码
SELECT
    user_id,
    COUNT(DISTINCT session_id) AS visit_sessions,  -- 访问会话数
    MAX(channel) AS last_channel                  -- 最后访问渠道
FROM dwd_user_visit
WHERE dt >= '2026-05-20'
GROUP BY user_id;

session_id:一次打开 APP 算一个会话

用于用户活跃度、渠道偏好分析

2. 统计支付成功 / 失败订单数、金额、成功率

sql 复制代码
SELECT
    dt,
    COUNT(*) AS total_order,
    SUM(IF(pay_status=1, 1, 0)) AS success_order,
    SUM(IF(pay_status=1, order_amt, 0)) AS success_amt,
    ROUND(SUM(IF(pay_status=1, 1, 0))/COUNT(*), 3) AS pay_rate
FROM dwd_trade_order
GROUP BY dt;

pay_status=1 代表支付成功

支付率 = 成功订单数 / 总订单数

交易核心监控指标,金融 / 电商必备

3. 统计各城市各类型设备错误次数 Top5

sql 复制代码
SELECT * 
FROM (
    SELECT
        city,
        error_type,
        COUNT(*) AS error_cnt,
        ROW_NUMBER() OVER(PARTITION BY city ORDER BY COUNT(*) DESC) rn
    FROM dwd_device_error
    GROUP BY city, error_type
) t 
WHERE rn <= 5;

按城市分组,统计各类错误数量

取每个城市错误最多的前 5 类

物联网 / 设备运维必备排查 SQL

三、Pyspark

今日重点:PySpark cache & persist 缓存优化(生产提速神器)

  • 为什么要用缓存?
    一份数据多次使用(多次计算、多次输出)
    不缓存会重复读取 HDFS,速度极慢
    缓存到内存 / 磁盘,大幅提升运行速度
  • 企业标准实战代码
python 复制代码
from pyspark.sql import SparkSession

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

# 1. 读取大表
df = spark.read.table("dwd.user_behavior")

# 2. 缓存到内存(最常用)
df.cache()

# 3. 也可以手动指定存储级别(更灵活)
# df.persist(pyspark.StorageLevel.MEMORY_AND_DISK)

# 4. 第一次计算(触发缓存)
df.count()

# 5. 后续复用,直接读内存,极快
df.groupBy("user_id").count().show()
df.groupBy("channel").count().show()

# 6. 用完释放缓存
df.unpersist()

spark.stop()
  • 超详细讲解
    cache():默认缓存到内存,快速方便
    persist():可指定缓存到内存 + 磁盘,防止内存不足
    多次使用的表必须缓存,这是 Spark 任务提速核心手段
    用完必须释放,避免占用集群资源
  • 生产最佳实践
    大表、频繁复用表 → 缓存
    一次性使用表 → 不缓存
    流处理任务必须配合缓存使用

四、算法

有效的字母异位词

python 复制代码
def isAnagram(s: str, t: str) -> bool:
    if len(s) != len(t):
        return False
    return sorted(s) == sorted(t)

详细思路

字母异位词:字母相同、排列不同

先判断长度是否一致

排序后对比是否完全一样

时间复杂度 O (n log n)
大数据用途

数据清洗、字段脱敏、日志格式校验高频使用

相关推荐
stonewl259921 分钟前
2026化工企业标签打印自动化方案
大数据
独隅38 分钟前
VS Code Git 工作树多分支并行开发实战指南
大数据·git·elasticsearch
千维百策66638 分钟前
AI 软件开发中的人与智能体:软件工程循环、人在环路中与框架工程
大数据·人工智能·软件工程
zjnlswd1 小时前
C#学习笔记4
笔记·学习·c#
minglie11 小时前
在linux环境烧录esp8266
学习
梦伢mm2 小时前
直播切片素材不足,易元 AI 可以自动拆分直播视频做带货素材吗?
大数据
xqqxqxxq2 小时前
AI Agent学习:MCP与工具生态:工具选择的挑战(李博杰《深入理解 AI Agent》4.3观后总结)
人工智能·学习
青山是哪个青山2 小时前
LangChain 学习笔记(九):上下文与记忆
笔记·学习·langchain
Lalolander3 小时前
2026年成长型企业上金蝶,抓3个重点(预算有限如何起步)
大数据·制造·erp·金蝶erp·erp实施·金蝶ai星空
KaKa_大王3 小时前
关于秒杀项目的一些理解
java·学习