spark 高级函数lag应用--session划分

本文介绍如何使用Spark的lag函数对用户观看视频和浏览网页的记录进行session划分。通过设置访问间隔超过一天作为新的session条件,结合window函数与lag,对数据进行多分类处理,实现session的智能划分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spark lag高级函数应用--Session 划分

需求分析

有一组数据是用户观看观看视频,浏览网页的记录,三列:user_id,start_time,end_time
在这里插入图片描述用户从start_time开始浏览网页,到end_time结束浏览当前网页,我们想对用户的观看进行session划分,规定如果用户的访问间隔超过一天,那么就认为这两条记录是两个session的数据,否则是一个session的数据。

lag/lead 函数解释

他们都是window 函数,常见的window函数是row_number, 先贴出spark源码官方解释以免解释不清造成误解。在这里插入图片描述1.对于lag: 有三个参数column, offset. column就是你想取值的那一列,offset就是你想向上取第几列的值。1表示当前行的前一行,2 表示当前行向上数第二行。defaultValue就是默认值
用法 : 首先分组排序逻辑

 import org.apache.spark.sql.expressions.Window
 val win = Window.partitionBy("user_id").orderBy("start_time")
val dfx = df.withColumn("befor_end_time",F.lag($"end_time",1).over(win))
那么在当前行就可以获取到前一行的end_time并且命名为befor_end_time。

2.对于lead:用法一样,和lag意思相反,就是向下取第几行。<

### LACP 和 M-LAG System-ID 配置与原理 #### LACP System-ID 原理 Link Aggregation Control Protocol (LACP) 使用系统优先级和系统MAC地址组合而成的System ID来进行链路聚合组的选择。当多个设备之间建立多条物理连接时,这些连接可以通过LACP协议被聚合成一条逻辑上的高速通道。为了确保不同厂商之间的兼容性和唯一性识别,每台参与LACP协商的网络设备都会提供一个唯一的System ID给其伙伴节点。 对于LACP而言,System ID通常由两个部分组成:一个是16位的系统优先级字段;另一个则是48位长度的系统MAC地址[^2]。较低数值的优先级意味着更高的优先权,在相同优先级的情况下,较小的MAC地址会被选作主控方。 #### M-LAG System-ID 实现方式 Multi-Chassis Link Aggregation Group (M-LAG),即跨框链路捆绑技术,允许两台独立工作的交换机构建出类似于单一实体的行为模式。在这种情况下,构成M-LAG关系的一对交换机会共享相同的MAC地址和一致性的系统优先级设置,以此来“欺骗”上下游其他相连装置认为它们是一个整体,并据此形成跨越这两台机器间的冗余路径保护机制。 具体来说: - **MAC Address Sharing**: 构成M-LAG系统的两台交换机必须拥有完全一样的MAC地址,这使得外部看来就像是一台单独运作的大容量交换机。 - **Priority Configuration**: 同样地,也需要设定相匹配的高精度时间戳或者低级别的整数作为系统优先级参数,以便于在发生故障切换过程中能够快速决定哪一方应该接管主要职责。 值得注意的是,在某些特定品牌的产品线里(比如H3C),可能还需要额外手动指定用于M-LAG通信的专用MAC地址,而该地址也会参与到生成树协议(STP)计算当中去[^4]。 ```shell # H3C 设备上配置M-LAG示例命令 interface Bridge-Aggregation 1 port link-aggregation mlag-port-channel mac-address 00e0.fcxx.xxxx # 手工配置MAC地址 stp enable # 开启STP功能并应用上述MAC地址到实例中 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值