大数据开发学习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)
大数据用途

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

相关推荐
SelectDB7 小时前
时间旅行与快照能力速查:Doris 侧三条落地路径
大数据·数据库·数据分析
SelectDB7 小时前
云数仓成本结构拆解速查:五层计费 vs Doris / 托管形态
大数据·数据库·数据分析
SelectDB7 小时前
什么场景能承接与建议保留:Doris vs Snowflake 边界速查
大数据·数据库·数据分析
裕晟资质规划12 小时前
三类资质变更报告时限差在哪?军工 15 日、集成印制 10 日
大数据·服务器·网络
考拉讲支付12 小时前
母婴亲子服务平台分账架构设计:多场景多方分账与合规清结算实践
大数据·运维·人工智能·微信小程序·架构·微信公众平台
xier_ran12 小时前
【infra之路】AI 编译器学习笔记(十三):AI 编译器全景——TVM、XLA、IREE 与其他
人工智能·笔记·学习
连山齐名12 小时前
ai应用开发的学习笔记
服务器·笔记·学习
什么嘻嘻果冻13 小时前
无代码开发平台的技术架构,恐象 AI 的生成引擎拆解
大数据·人工智能·低代码
用户36105886261213 小时前
Flink 优化之 CheckPoint 优化及参数详解:从原理到生产环境调优的完整指南
大数据·flink