240 发简信
IP属地:北京
  • row_number() 分组去重优化

    笔者最近在做一些任务的优化,大多的场景是因为采用row_number()进行分组去重,所以耗时特别高。样例代码如下: 原因 要做这个操作,不得不做的就是shuffle,而且因...

  • 120
    设计模式之Adapter,Proxy,Decorator,Proxy

    再次温故一下设计模式,这次将比较容易混淆的几个放在一起比较一下,这4个都是结构型的。

  • 程序员看毛选之用户分群

    毛选中的大多数文章都是很简短的,中心明确,没有废话。以这篇为例:怎样分析农村阶级(一九三三年十月)[https://www.marxists.org/chinese/maoz...

  • 120
    设计模式之Strategy vs Template Method

    笔者之前对策略模式和模板方法的理解有些模糊,正好有空查查资料搞清楚两者之间的区别。一句话来说就是: 策略模式:把具体实现都留给子类或者实现类。重子类 模板方法:父类定好算法框...

  • Rust中的repr(C)

    Rust编译器不会保证类型的布局,但是提供了一个属性用来对类型添加布局要求,如下所示: #[repr(C)]提供了兼容C/C++编译器的类型布局,当你在使用FFI的时候会很有...

  • SQL按天输出累计UV

    笔者今天遇到一个数据需求,计算从2024年1月1日到今天为止每一天的累计UV,即每一天都是一个从2024年1月1日累计到那一天的UV。 暴力法 一种从结果结果的办法就是制作一...

  • 防御性SQL

    SQL中增加防御性 接到产品一个的临时跑数需求,如下: 近30天的uva表中条件c1b表中条件c2c表中条件c3 以上业务虽然很简单,但是对于上述的3个表我个人其实不是很熟悉...

  • 好的开发者应该拥有强大的抽象能力

    笔者在这篇文章[https://www.jianshu.com/p/3fc9b458bdab]中提到了如何使用SQL来完成时间段的一个合并,在完成该任务的同时不禁感叹为啥提供...

  • SQL中时间段合并

    问题:现有一堆的时间段,s表示开始时间,e表示结束时间。需要将所有时间段合并。合并规则: 如果2个时间段有重叠则合并成一个时间。 不重叠则作为一个单独的时间段。

  • SQL中的集合优化

    今天写SQL的时候有个逻辑是要取2个时间窗口有交集的数据,过滤条件如下:2个时间窗大小 [start_time1, end_time1] 和 [start_time2, en...

  • 利用数据湖特性加速数据校验

    数据湖自身会提供一些元数据的信息,我们可以利用这些信息进行快速粗略的数据校验 分区数据数校验 以Iceberg为例,catalog.db.tb2.partitions可以得到...

  • Rust和大数据

    笔者从事大数据行业,最近对Rust语言比较感兴趣,特地关注了一下Rust在大数据生态中的建设情况,以下是一些由Rust编写的大数据框架,感兴趣的同学可以关注相关项目: Apa...

  • 数仓开发的一些业务素养

    近期组内产品分享了关于指标的一些内容,其中最令我印象深刻的就是指标体系的构建,虽说在日常的业务开发中很多概念,比如活跃,留存,激活等都是明白的,但是这些离散的东西很难构成一个...

  • 关于软件架构设计的几点想法

    今天在看《Computer Networks:A Systems Approach》,读到这段的时候有些感触,基本涵盖了整个软件架构(开发)的整个过程。 To start u...

  • 120
    HDFS写详解 block、packet与chunk

    block、packet与chunk 在DFSClient写HDFS的过程中,有三个需要搞清楚的单位:block、packet与chunk; block是最大的一个单位,它是...

  • 留存概念

    这几天做一个有留存指标的需求,发现对留存的理解有点想当然了。留存是当天有A行为,在第二天有B行为的用户群体。一般来讲A和B是相同的,但是有些时候需求方的留存是有特殊场景的,并...

  • Rust中的Rc

    特点 单线程的引用计数 不可变引用 非线程安全,线程安全请使用Arc 循环引用问题 仅仅使用Rc会遇到循环引用的问题,导致指针没法被释放掉,此时可以通过Weak来打破这种引用...

  • 120
    讨论什么时候应该做gc调优及意义

    一、背景 线上环境下,jvm经常发生full gc;运维监控方面,服务健康检测不健康;用户体验方面,经常出现大量的慢接口调用。经观察,这三者是伴随发生的。起初,我们从慢接口入...

  • SparkSQL应用的一个排错和重构

    故事背景 数据处理逻辑:将一个json的数组从map结构里面扣出来然后将json数组里面的每一个元素和map结构里面的其他元素重新组成一个新的map,存入一个新表实现方式:采...

  • SparkSQL处理复杂json的例子

    问题 使用SparkSQL将上述的数据根据嵌套提取成3列 解答 主要采用Spark 3.1.0新增的json_object_keys函数拿到key值,然后依次提取,最后输出如...