当前位置: 首页 > news >正文

大数据开发学习Day13

一、Linux / Shell

有日志文件 error.log,格式如下

[2025-04-1310:00:00]ERROR uid100 连接失败[2025-04-1310:01:00]INFO uid101 登录成功[2025-04-1310:02:00]ERROR uid100 请求超时[2025-04-1310:03:00]ERROR uid102 认证失败

1. 只筛选出含 ERROR 的行
2. 提取第 4 列(uid)
3. 统计每个 uid 出现的错误次数
4. 按次数降序排列

grep"ERROR"error.log|awk'{print $4}'|sort|uniq-c|sort-nr

grep “ERROR”
只保留错误日志,过滤掉正常日志。
→ 大数据生产常用:快速筛异常

awk ‘{print $4}’
按空格分隔取第 4 列(uid)

和 cut 区别:
cut 适合固定单个符号分隔(逗号、冒号)
awk 适合空格 / 多空格分隔的日志,更强

sort | uniq -c
先排序,再去重并计数。
→ 固定套路:统计出现频次

二、SQL

612. 平面上的最近距离

几何计算 + 自连接 + 聚合
1. 自连接匹配任意两点
2. 欧几里得距离公式
3. MIN() + ROUND()

SELECTROUND(MIN(SQRT(POWER(p1.x-p2.x,2)+POWER(p1.y-p2.y,2))),2)ASshortestFROMPoint2D p1JOINPoint2D p2ON(p1.x,p1.y)<>(p2.x,p2.y);

POWER(a,2) → a²
SQRT( ) → 开平方
MIN( ) → 取最小距离
ROUND(…,2) → 保留两位小数

(a,b) <> (c,d)
联合字段判断不等,避免点自己和自己配对

1045. 买下所有产品的客户

分组计数 + 全集匹配
COUNT(DISTINCT)
分组后 HAVING 计数 = 总产品数

SELECTcustomer_idFROMCustomerGROUPBYcustomer_idHAVINGCOUNT(DISTINCTproduct_key)=(SELECTCOUNT(*)FROMProduct);

1709. 每轮的最大大小

分组计数 + 排名 + 取最大值
COUNT() 分组统计
窗口函数排名
筛选 top1

WITHcntAS(SELECTgroup_id,COUNT(*)ASnumFROMEventsGROUPBYgroup_id),ranksAS(SELECTgroup_id,DENSE_RANK()OVER(ORDERBYnumDESC)ASrnkFROMcnt)SELECTgroup_idFROMranksWHERErnk=1;

三、PySpark

frompyspark.sqlimportSparkSessionfrompyspark.sqlimportfunctionsasF spark=SparkSession.builder \.master("local[*]")\.appName("day13")\.getOrCreate()data=[(1,101,"click"),(1,101,"buy"),(2,102,"click"),(3,103,"click"),(3,103,"buy"),(3,103,"like")]df=spark.createDataFrame(data,["user_id","item_id","action"])# 1. 按用户统计行为数df.groupBy("user_id")\.agg(F.count("*").alias("action_cnt"))\.show()# 2. 筛选有购买行为的用户df_buy=df.filter(F.col("action")=="buy")df_buy.show()# 3. 左连接还原用户全行为df.join(df_buy.select("user_id").distinct(),on="user_id",how="leftsemi").show()spark.stop()

leftsemi join(左半连接)
只保留左表中在右表能找到匹配的数据。
等价于 EXISTS 语句,但性能更高

四、算法

相交链表
找到两个单链表相交的起始节点

classListNode:def__init__(self,x):self.val=x self.next=NonedefgetIntersectionNode(headA,headB):a,b=headA,headBwhilea!=b:a=a.nextifaelseheadB b=b.nextifbelseheadAreturna
http://www.jsqmd.com/news/644044/

相关文章:

  • 2026年比较好的生活饮用水在线检测/空气微生物在线检测/广州空气微生物在线检测综合评价公司 - 品牌宣传支持者
  • 退出三星手机 SS RDX 模式
  • 揭秘Audiveris:如何将乐谱图像转化为智能音乐数据
  • 并联型有源电力滤波器APF的Simulink仿真(附带模型与12页说明文件)
  • 如何在 Linux 系统安装 Nginx?附可视化安装与管理教程
  • 写给五年后2031年的自己
  • 2026年口碑好的养殖场除臭设备/养殖除臭机/养猪场除臭机厂家推荐及采购指南 - 行业平台推荐
  • 集装箱岗亭实力厂家哪家好,特色定制亮点解读 - myqiye
  • 别再手动部署Harbor了!用Helm在K8s里一键搞定高可用镜像仓库(附NFS存储配置避坑)
  • Django5 settings.py配置避坑指南:从开发到上线的完整流程
  • 为什么我建议你停止过度设计你的类结构?
  • 从Dubbo到ES:拆解Netty在主流中间件中的实战应用与避坑指南(附配置参数详解)
  • AI论文生成工具怎么选?精选11款写论文的AI工具教程,让写毕业论文不再苦恼! - 掌桥科研-AI论文写作
  • 2026年雕琢光年|事业伙伴见面会圆满落幕!AI赋能,共赴新程! - 速递信息
  • 动物步态分析系统选哪个品牌?众实迪创——科研级精准捕捉与AI智能分析 - 品牌推荐大师1
  • 基于eNSP的校园网络规划与冗余架构实战解析
  • 如何用三月七小助手解放双手:崩坏星穹铁道全自动游戏助手终极指南
  • X-AnyLabeling3.2实战:从零部署到自定义模型自动标注
  • Hermes Agent 技术深潜(三):记忆系统与学习循环的完整源码解析
  • 私有云 IaaS 平台部署与运维实战 —— 国基北盛 OpenStack 标准化搭建与运维实践
  • 2026年3月无缝管厂商口碑实力:品质铸就辉煌,焊管/12Cr1MoV合金板/卷管,无缝管切割厂家怎么联系 - 品牌推荐师
  • md2pptx:当Markdown遇见结构化思维,演示文稿的范式转换
  • 26年春季学期学习记录第25天
  • 如何用 skipWaiting 强制让新版本的 Service Worker 立即生效
  • Hunyuan-MT 7B Python零基础入门:快速上手翻译模型
  • Hodgkin–Huxley动作电位模型
  • 写给五年后(2031)的自己
  • 3分钟找回遗忘QQ号:手机号查询工具的实用指南
  • 如何获取SQL季度统计数据_使用QUARTER函数进行分组
  • 周范围选择器