大数据开发学习Day45

一、Linux

1. 统计指定端口连接数(排查连接数过高、连接泄露)

bash 复制代码
netstat -an | grep 9092 | wc -l

netstat -an:查看本机所有网络连接,不解析主机名、端口名,执行更快

grep 9092:筛选 Kafka 默认端口连接,也可替换为 Spark、Redis 等端口

wc -l:统计连接总数

实战场景:中间件连接数爆满、服务卡顿、连接池溢出排查

2. HDFS 查看文件详细权限、所有者、组信息

bash 复制代码
hdfs dfs -ls -h /user/hive/dws/ | awk '{print $1,$2,$3,$4,$8}'

展示 HDFS 文件权限、副本数、所属用户、用户组、文件路径

大数据多用户集群权限排查、跨账号读写权限异常专用

数仓表目录权限规范巡检常用

3. 后台执行 Shell 脚本并忽略挂断信号

bash 复制代码
setsid ./etl_daily.sh > ./task_log/etl.log 2>&1

setsid:新建会话运行脚本,脱离当前终端,终端关闭进程也不会终止

区别于 nohup,更适合长时间运行的批量 ETL 脚本

日志统一输出到指定文件,方便后续排错

二、SQL

表结构说明

dwd_loan_apply 信贷申请表:apply_id,user_id,apply_money,apply_time,audit_status,dt

dwd_travel_record 出行轨迹表:user_id,start_addr,end_addr,travel_time,travel_type,dt

dwd_supplier_shop 供应商门店表:shop_id,supplier_id,trade_volume,register_time,dt

1. 分时段统计信贷申请量、审批通过量、通过率

sql 复制代码
SELECT
    hour(apply_time) apply_hour,
    COUNT(apply_id) total_apply,
    SUM(IF(audit_status=1,1,0)) pass_apply,
    ROUND(SUM(IF(audit_status=1,1,0))/COUNT(apply_id),4) pass_rate
FROM dwd_loan_apply
WHERE dt = '2026-05-26'
GROUP BY hour(apply_hour)
ORDER BY apply_hour;

按小时拆分申请时段,做分时监控

audit_status=1 代表审批通过,条件聚合统计通过量

通过率是金融信贷风控核心指标,用于人力排班、风险时段监控

分区过滤缩小扫描范围,提升查询性能

2. 统计各出行方式的用户数、出行总次数

sql 复制代码
SELECT
    travel_type,
    COUNT(DISTINCT user_id) user_cnt,
    COUNT(*) travel_times
FROM dwd_travel_record
WHERE travel_time BETWEEN '2026-05-01' AND '2026-05-26'
GROUP BY travel_type;

travel_type 区分自驾、公交、地铁、网约车等出行类型

双指标统计:去重用户数体现受众规模,总次数体现使用频次

交通、出行类大数据业务常规分析口径

3. 统计每个供应商旗下门店营收排名 Top3

sql 复制代码
SELECT *
FROM (
    SELECT
        supplier_id,
        shop_id,
        trade_volume,
        DENSE_RANK() OVER(PARTITION BY supplier_id ORDER BY trade_volume DESC) rk
    FROM dwd_supplier_shop
) t
WHERE rk <= 3;

使用 DENSE_RANK() 排名,并列名次不跳号,和ROW_NUMBER/RANK形成区分考点

按供应商分组,筛选旗下营收前三的门店

供应链、电商供货体系分析常用 SQL

三、Pyspark

今日重点:PySpark 多数据源读写实战(Hive + 本地文件混合操作)

  • 业务场景
    企业项目中经常需要读取 Hive 数仓表做计算,最终结果落地为本地文件 / 外部文件,或是反向导入,属于混合数据源常规操作。
  • 完整可运行代码 + 逐行注释
python 复制代码
from pyspark.sql import SparkSession

# 初始化会话,开启Hive支持(关键配置)
spark = SparkSession.builder \
    .appName("MultiSourceReadWrite") \
    .enableHiveSupport()  # 对接Hive元数据,读写Hive表必备
    .getOrCreate()

# 1. 读取Hive内部表数据
hive_df = spark.read.table("dwd.trade_order")

# 简单数据过滤加工
filter_df = hive_df.filter(col("dt") == "2026-05-26")

# 2. 将计算结果写入本地CSV文件(落地离线报表)
filter_df.coalesce(1) \
    .write \
    .mode("overwrite") \
    .option("header","true") \  # 输出表头
    .csv("/data/report/trade_daily_report")

# 3. 反向读取本地CSV文件,写入Hive分区表
local_df = spark.read \
    .option("header","true") \
    .csv("/data/report/trade_daily_report")

local_df.write \
    .mode("append") \
    .partitionBy("dt") \
    .saveAsTable("dws.trade_report_hive")

spark.stop()
  • 核心知识点详解
    • enableHiveSupport()
      开启后 Spark 可直接关联 Hive 元数据库,支持read.table、分区表、Hive 函数,数仓项目必加配置。
    • 读写 CSV 参数
      • header=true:识别 / 生成表头,报表类文件必备
      • coalesce(1):合并为单个文件,方便业务人员下载查看报表
    • 写入模式
      overwrite:覆盖已有数据;append:追加数据,分区表增量更新首选
    • 分区写入 partitionBy:自动按字段生成 Hive 分区目录,贴合数仓分层规范
  • 生产避坑 & 优化
    • 大数据量禁止coalesce(1),会造成单 Task 压力过大、OOM,仅小体量报表使用
    • 跨数据源读写注意字段类型对齐,避免字符串与数值类型隐式转换报错
    • 读写外部文件配置文件编码:.option("encoding","utf-8")
  • 面试考点
    Spark 对接 Hive 的核心配置、不同文件格式(CSV/Parquet)适用场景、三种写入模式区别

四、算法

最长回文子串

python 复制代码
def longestPalindrome(s: str) -> str:
    def expand(left, right):
        # 中心扩散查找回文串
        while left >= 0 and right < len(s) and s[left] == s[right]:
            left -= 1
            right += 1
        return s[left+1:right]
    
    res = ""
    for i in range(len(s)):
        # 奇数长度回文、偶数长度回文分别判断
        s1 = expand(i, i)
        s2 = expand(i, i+1)
        # 保留最长结果
        res = max(res, s1, s2, key=len)
    return res

思路讲解

采用中心扩散法,遍历每个字符作为回文中心

分两种情况:奇数长度(单中心)、偶数长度(双中心)

向左右两侧扩散,直到字符不相等或触达边界

每次对比保留最长的回文子串
大数据实战用途

日志字符串、设备编号、用户 ID 等特殊格式字段校验

文本类数据清洗、异常字符匹配场景参考该思想

相关推荐
暴躁小师兄数据学院1 小时前
【AI大数据工程师特训笔记】第10讲:数据库用户、权限管理、数据库约束
大数据·数据库·笔记·sql·postgresql
标书畅畅行1 小时前
2026 年 AI 标书工具市场观察:技术迭代与选型指南
大数据·人工智能
黎阳之光2 小时前
视频孪生+空天地水工融合,黎阳之光构建智慧水利监测新范式
大数据·人工智能·物联网·算法·安全
吃好睡好便好2 小时前
说说如何爱护肠道
学习·生活
CoreTK_EMC2 小时前
牙科医疗器械 ESD 静电整改案例|芯通康医疗级方案,护航诊疗安全与合规
网络·学习·emc整改·芯通康
南浦别a2 小时前
第一百一十三天--慢慢改变吧
学习·程序人生
暴躁小师兄数据学院2 小时前
【AI大数据工程师特训笔记】第02讲:PostgreSQL数据库生态全景
大数据·数据库·人工智能·postgresql
2601_957882243 小时前
企业矩阵系统建设实践:优化内容资产与数字获客流程
大数据·人工智能·矩阵系统·企业数字化运营
GIS数据转换器3 小时前
智慧能源管理平台
java·大数据·运维·人工智能·无人机