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

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

相关推荐
五度易链-区域产业数字化管理平台2 小时前
大数据驱动智慧招商:五度易链园区数字化解决方案
大数据
心疼你的一切2 小时前
高效内容生产:如何实现规模化创作
大数据·人工智能·ai·ai编程·ai写作
imbackneverdie4 小时前
深耕医学科研智能化十年,MedPeer打造新一代AI生物医学科研操作系统
大数据·人工智能·ai·信息可视化·数据分析·aigc·科研
happymaker06264 小时前
SpringBoot学习日记——DAY06(整合MyBatisPlus的其他功能)
java·spring boot·学习
Xuantong_905 小时前
玄同科技亮相2026金砖新工业革命展览会,智启全球合作新篇
大数据·人工智能
星夜夏空995 小时前
FreeRTOS学习(3)——FreeRTOS的移植与剪裁
学习
嵌入式×边缘AI:打怪升级日志5 小时前
硬件清单与学习进度存档
学习
机器学习之心6 小时前
上海原油期货收益率研究数据集说明
大数据·人工智能·上海原油期货收益率
计算机安禾6 小时前
【算法分析与设计】第19篇:二分图匹配与指派问题
大数据·人工智能·算法