大数据开发学习Day35

一、Linux

查看本机 IP 地址
测试域名连通性
统计当前在线连接数

bash 复制代码
ip addr
ping -c 3 www.baidu.com
netstat -an | wc -l

ip addr 查看内外网 IP,集群节点互通排查

ping -c 指定次数 ping,测试网络连通性

netstat 统计连接数,排查服务并发压力

二、SQL

2041. 面试中被录取的候选人

sql 复制代码
SELECT DISTINCT c.candidate_id
FROM Candidates c
JOIN Rounds r ON c.interview_id = r.interview_id
WHERE c.years_of_exp >= 5
GROUP BY c.candidate_id
HAVING SUM(r.score) > 15;

多表关联 + 分组求和筛选条件,求职数据统计

2159. 排序购买订单

sql 复制代码
SELECT
customer_id,
MIN(order_date) AS first_order_date,
MAX(order_date) AS last_order_date
FROM Orders
GROUP BY customer_id;

聚合函数求极值,用户行为首末次行为统计

2235. 两数相加(数据库题型)

sql 复制代码
SELECT num1 + num2 AS sum FROM Numbers;

字段数值运算,基础数值计算语法

三、Pyspark

  1. 什么是 Spark 数据倾斜
  • 产生原因
    • 分组 Key、Join Key 分布极度不均,少量 Key 承载 90% 以上数据
    • 热点 Key 导致单个 Executor 任务爆表、OOM、执行超时
    • 常见场景
      • 大表 Join 小表热点用户
      • 日期固定值分组、空值大量聚集
      • 城市、地区少数热门维度聚集海量数据
  1. 解决方案 1:加盐打散(最常用)
  • 原理
    • 对倾斜 Key添加随机前缀打散分发
    • 普通 Key 不变
    • 另一端表扩容匹配随机数,完成 Join 后去除加盐恢复原始 Key
python 复制代码
from pyspark.sql import SparkSession
import random
from pyspark.sql.functions import col, concat, lit, substring

spark = SparkSession.builder.appName("SaltSkew").getOrCreate()

# 模拟倾斜大表:大量key=0热点数据
big_data = [(0,f"user{i}") for i in range(10000)] + [(1,"user10001")]
df_big = spark.createDataFrame(big_data,["join_key","user_name"])

# 模拟正常小表
small_data = [(0,"北京"),(1,"上海")]
df_small = spark.createDataFrame(small_data,["join_key","city"])

# 1. 大表倾斜key加盐 0 -> 0_0 ~ 0_9
def add_salt(key):
    if key == 0:
        return f"{key}_{random.randint(0,9)}"
    else:
        return str(key)

# Spark SQL加盐写法(企业通用)
df_big_salt = df_big.withColumn("salt_key",
    concat(col("join_key"),lit("_"),(col("join_key")%10))
)

# 2. 小表扩容10份,匹配加盐前缀
df_small_expand = df_small.join(
    spark.range(10),lit(1)
).withColumn("salt_key",concat(col("join_key"),lit("_"),col("id")))

# 3. 加盐后Join,彻底打散热点
join_df = df_big_salt.join(df_small_expand,on="salt_key","left")

# 4. 剔除加盐字段,恢复原始key
final_df = join_df.withColumn("real_key",substring(col("salt_key"),1,1))\
                  .drop("salt_key","id")

final_df.show()
spark.stop()
  1. 解决方案 2:拆分热点 Key 单独处理
  • 过滤出倾斜热点数据单独 Join
  • 正常数据正常 Join
  • 两部分结果 union 合并
    适用:热点 Key 数量极少场景
  1. 解决方案 3:空值倾斜优化
  • 大量null作为分组 / 关联 key 造成倾斜
python 复制代码
# 将null随机填充打散,避免聚集
df = df.fillna({"join_key":"rand_key_"})
  1. 解决方案 4:大表小表广播 Join(Broadcast)
  • 小表直接分发到所有 Executor,避免 shuffle 倾斜
python 复制代码
from pyspark.sql.functions import broadcast
# 小表广播
df_big.join(broadcast(df_small),on="key")

使用场景:一张大表、一张百级 / 千级小表

  1. 企业排查数据倾斜命令
  • 查看任务分区数据量分布
  • Spark UI 查看 Stage 详情,发现单个 task 数据量超大即为倾斜
  • 优先使用加盐解决绝大多数业务倾斜

四、算法

202. 快乐数

python 复制代码
def isHappy(n: int) -> bool:
    def get_sum(x):
        res = 0
        while x:
            res += (x%10)**2
            x //= 10
        return res
    slow, fast = n, get_sum(n)
    while slow != fast:
        slow = get_sum(slow)
        fast = get_sum(get_sum(fast))
    return slow == 1

快慢指针判循环,无哈希集合,空间最优

相关推荐
wixzjsh1 小时前
TCP通信与HTTP协议学习笔记:粘包、三次握手、四次挥手与C/S、B/S模型
学习·tcp/ip·http
ZhiMuZhiLing1 小时前
拓客软件学习成本实测方法论:从注册到出第一批名单要多久
学习·流量运营·用户运营
宸津-代码粉碎机1 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
程序员大雄学编程1 小时前
微积分46. 无穷级数四大核心性质:从理论到实践的全方位解析
python·学习·微积分·学习工具
博、、2 小时前
从零构建智慧场馆解决方案:架构设计与开发实践
大数据·运维
AI行业说2 小时前
誉财自动化YC-18-M8045实测:服装自动化vs人工缝制产能成本对比
大数据·人工智能·自动化·智能模板机
2601_963749102 小时前
越华环保集团数字化污水治理:端边云采集架构与平台对接实现
java·大数据·架构
爱吃火鸡面呀3 小时前
MySQL DQL 子查询详解:从标量、列、行到表子查询的完整实战
大数据·数据库·mysql
AI科技先锋报3 小时前
AI数据资产管理平台全景洞察:从治理基座到智能体应用
大数据·人工智能
betazhou3 小时前
Apache Seatunnel 抽取Oracle数据库测试
数据库·oracle·apache·seatunnel