Apache DataFu: LinkedIn开源的Pig UDF库

简介:

介绍

Apache DataFu分两部分,本文介绍的是其Pig UDF的部分。代码在 Github上开源(除了代码外,也有一些slides介绍链接)。

DataFu里面是一些Pig的UDF,主要包括这些方面的函数:

bags、geo、hash、linkanalysis、random、sampling、sessions、sets、stats、urls

每方面都对应一个package。


我把所有的函数源码都浏览了一遍。其实本身对这些UDF的使用, 官方的文档上都有介绍,而且源码的注释里也些的很清晰。所以使用本身是很简单的。

从实现角度看,继承自Pig EvalFunc体系。我们知道Pig里的builtin functions里,有代数函数(AVG、COUNT、Distinct、TOP),代数数学函数(MAX、SUM),基本数学函数(SIN、COS、TAN、FLOOR、LOG)等等。

DataFu实现了一个SimpleEvalFunc抽象类,继承自EvalFunc,包装了EvalFunc,为简单的UDF简化了实现过程(省略了一些异常检查情况,只需注重处理逻辑)。

通过反射的方式,在exec()方法里做好参数null检查,个数检查,最后把参数传给子类实现的call()方法,返回结果。

SimpleEvalFunc的子类继承体系如下:



下面那各个Package包含的函数功能简单概况一下。

bags

对Bag的基本操作,涉及append、concat、group、left-join、split、count等等


geo

经纬度距离计算


hash

对输入的String进行MD5和SHA的转换


linkanalysis

一个PageRank的实现


random

只有一个RandInt,输入两个值,输出两值之间的一个random值


sampling

SimpleRandomSample和ReservoirSample,后者的Reservoir是一个PriorityQueue,存的是ScoredTuple。前后者区别在于无界和有界的sample结果。


sessions

按一段time window来group


sets

Set之间的差、交、并。

处理的bag内的tuples必须是有序的。


stats

统计相关方法:

      计算Quantile的两种方式,一种是流式的。Quantile包含了Median。

      方差。


urls

用于区分user agent来源(电脑还是手机,什么系统的手机)




全文完 :)

目录
相关文章
|
6月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
775 5
|
6月前
|
算法 Java Go
Apache Zeppelin 番外篇——参与开源的得与失
Apache Zeppelin 番外篇——参与开源的得与失
83 0
|
10天前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
14天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
15天前
|
SQL DataWorks 关系型数据库
阿里云 DataWorks 正式支持 SelectDB & Apache Doris 数据源,实现 MySQL 整库实时同步
阿里云数据库 SelectDB 版是阿里云与飞轮科技联合基于 Apache Doris 内核打造的现代化数据仓库,支持大规模实时数据上的极速查询分析。通过实时、统一、弹性、开放的核心能力,能够为企业提供高性价比、简单易用、安全稳定、低成本的实时大数据分析支持。SelectDB 具备世界领先的实时分析能力,能够实现秒级的数据实时导入与同步,在宽表、复杂多表关联、高并发点查等不同场景下,提供超越一众国际知名的同类产品的优秀性能,多次登顶 ClickBench 全球数据库分析性能排行榜。
|
22天前
|
存储 物联网 数据处理
如何使用 Apache IoTDB UDF
【10月更文挑战第21天】使用 Apache IoTDB 的 UDF 可以为用户提供更大的灵活性和扩展性,帮助用户更好地处理和分析物联网数据。通过合理编写和使用 UDF,用户可以充分发挥 IoTDB 的潜力,实现更复杂、更高效的数据处理和分析任务。
24 2
|
3月前
|
SQL 分布式计算 数据处理
|
6月前
|
Kubernetes Cloud Native API
欢迎报名 Apache Seata (incubating) 开源之夏
Apache Seata (incubating) 邀请学生参加 2024 年开源之夏活动,报名时间为 4 月 30 日至 6 月 3 日。该项目旨在培养分布式事务领域的开发者,参与者将远程协作并有机会获得奖金。
1325 17
|
6月前
|
数据采集 机器学习/深度学习 Java
数据猎手:使用Java和Apache HttpComponents库下载Facebook图像
本文介绍了如何使用Java和Apache HttpComponents库从Facebook获取图像数据。通过设置爬虫代理IP以避免限制,利用HttpClient发送请求,解析HTML找到图像链接,然后下载并保存图片。提供的Java代码示例展示了实现过程,包括创建代理配置、线程池,以及下载图片的逻辑。注意,实际应用需根据Facebook页面结构进行调整。
数据猎手:使用Java和Apache HttpComponents库下载Facebook图像
|
6月前
|
监控 Java Apache

推荐镜像

更多