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

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

相关推荐
倒流时光三十年10 分钟前
PostgreSQL JSONB 操作符详解
大数据·数据库·postgresql
心中有国也有家35 分钟前
AtomGit Flutter 鸿蒙客户端:情绪日记的时间线实现
学习·flutter·华为·harmonyos
2501_941982051 小时前
企业微信私域流量运营:如何利用RPA技术构建高效的社群自动化管理系统
大数据·人工智能·机器人·自动化·企业微信·rpa
Zhu7581 小时前
使用腾讯CNB构建Hadoop定制容器镜像
大数据·hadoop·分布式
恣逍信点2 小时前
《凌微经》助读:本体论根基——“无之自悖”与“形性一体”
人工智能·科技·学习·程序人生·生活·交友·哲学
TTBIGDATA2 小时前
【Ambari Plus】13.Spark 安装
大数据·hadoop·分布式·spark·ambari·sqoop·ambari plus
chh5634 小时前
C++--string
java·开发语言·网络·c++·学习
keyanbanyungong4 小时前
被市场忽略的AI4S细分赛道:MedPeer生物医药科研数字化稀缺龙头
大数据·人工智能
北京软秦科技有限公司4 小时前
跨区域批量项目交付难题如何破解?IACheck AI报告审核通审Agent版推动检测机构实现报告均质化管理
大数据·人工智能
浩瀚地学5 小时前
【Java基础复习】IO流(四)
java·开发语言·经验分享·笔记·学习