大数据开发学习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 等特殊格式字段校验

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

相关推荐
得物技术2 天前
从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流
大数据·llm·ai编程
久美子2 天前
AI驱动数仓建设的Harness工程实践——本体建模、知识分层与上下文工程
大数据
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
通信小呆呆2 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
大志哥1232 天前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
H__Rick2 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee2 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
果丁智能3 天前
物联网智能锁赋能集中式住宿:身份核验与远程权限管控的全链路技术实践
大数据·人工智能·物联网·智能家居
YM52e3 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统