大数据开发学习Day34

一、Linux

过滤文件中非空行
查看当前系统时区
递归修改目录下所有文件权限为 644

bash 复制代码
grep -v "^$" app.log
timedatectl
find . -type f -exec chmod 644 {} \;

grep -v "^$" 反向过滤空行,清洗日志、配置文件常用

timedatectl 查看系统时区 / 时间,集群时间同步排查必备

find + exec 批量递归授权,运维批量权限标准化操作

二、SQL

196. 删除重复的电子邮箱

sql 复制代码
DELETE p1
FROM Person p1
JOIN Person p2 
  ON p1.email = p2.email 
  AND p1.id > p2.id;

自连接删重复,保留最小 id

数据去重、脏数据删除经典模板

生产清洗重复数据高频写法

197. 上升的温度

sql 复制代码
SELECT w1.id
FROM Weather w1
JOIN Weather w2 
  ON DATE_SUB(w1.recordDate, INTERVAL 1 DAY) = w2.recordDate
WHERE w1.temperature > w2.temperature;

DATE_SUB 日期减 1 天,关联前一日数据

相邻日期同比、环比分析标准套路

时序数据、指标环比必备题型

584. 寻找用户推荐人

sql 复制代码
SELECT name
FROM Customer
WHERE referee_id != 2 OR referee_id IS NULL;

NULL 不能用!= 判断,必须单独写条件

空值 + 条件筛选易错点

业务圈人、渠道筛选常用

三、Pyspark

python 复制代码
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, date_sub, to_date

spark = SparkSession.builder \
    .master("local[*]") \
    .appName("Day34") \
    .getOrCreate()

# 1. 上升的温度 日期环比
df = spark.createDataFrame([
    (1, "2025-05-01", 20),
    (2, "2025-05-02", 25)
], ["id","recordDate","temperature"])

df.alias("w1").join(
    df.alias("w2"),
    date_sub(to_date("w1.recordDate"),1) == to_date("w2.recordDate")
).filter(col("w1.temperature") > col("w2.temperature"))
 .select("w1.id").show()

# 2. 推荐人筛选
cust = spark.createDataFrame([
    (1,"Alice",None),
    (2,"Bob",2),
    (3,"Cindy",3)
], ["id","name","referee_id"])

cust.filter( (col("referee_id") != 2) | col("referee_id").isNull() )
    .select("name").show()

spark.stop()

Spark date_sub、to_date 处理日期偏移,和 MySQL 日期逻辑对齐

多表自连接实现时序环比

空值判断 .isNull() 搭配或条件筛选

四、算法

21. 合并两个有序链表

python 复制代码
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def mergeTwoLists(l1, l2):
    dummy = ListNode()
    cur = dummy
    while l1 and l2:
        if l1.val < l2.val:
            cur.next = l1
            l1 = l1.next
        else:
            cur.next = l2
            l2 = l2.next
        cur = cur.next
    cur.next = l1 if l1 else l2
    return dummy.next

虚拟头结点法,链表合并标准模板

迭代双指针,时间 O (n)

链表入门必背高频题

相关推荐
AI_yangxi2 小时前
短视频矩阵系统选哪家
大数据·人工智能·矩阵
微尘寒风8 小时前
【Git】的安装和使用
java·git
y = xⁿ8 小时前
DeepSeek Harness 学习日记:关于Agent接口,工具调用的底层实现
android·java·学习
侧耳倾听1119 小时前
jwt使用简介
java·jwt
顶点多余9 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
AI人工智能+电脑小能手9 小时前
大白话说Java设计模式-46-责任链模式(业务实战篇)
java·设计模式·责任链模式·风控校验·servlet filter·spring interceptor·链式处理
jay神10 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
2601_9620664910 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
lupai10 小时前
手机在网状态接口实测效果与质量评估
大数据·python·智能手机·api接口
yaoxin52112311 小时前
507. Java 反射 - 在 BeanFactory 中实现依赖注入
java·开发语言