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来源(电脑还是手机,什么系统的手机)




全文完 :)

目录
相关文章
|
3月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
594 5
|
5月前
|
算法 Java Go
Apache Zeppelin 番外篇——参与开源的得与失
Apache Zeppelin 番外篇——参与开源的得与失
39 0
|
6月前
|
数据采集 分布式计算 Hadoop
开源数据质量解决方案——Apache Griffin入门宝典(上)
开源数据质量解决方案——Apache Griffin入门宝典
179 0
|
6月前
|
SQL 固态存储 Java
Apache Doris 原生C++ UDF之Coding(2)
Apache Doris 原生C++ UDF之Coding(2)
50 0
|
2月前
|
监控 Java Apache
|
6月前
|
SQL Java 应用服务中间件
Apache Doris 自定义C++ UDF之流程详解(1)
Apache Doris 自定义C++ UDF之流程详解(1)
122 0
|
4月前
|
SQL 数据可视化 大数据
【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台
【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台
144 1
|
9月前
|
存储 Java BI
探索Apache POI库:强大的Excel和Word文档处理工具
在企业应用和数据处理中,Excel和Word文档是常见的数据交换和存储格式。然而,处理和操作这些文档可能是一项繁琐的任务。Apache POI库作为一款强大的文档处理工具,可以帮助我们更轻松地进行Excel和Word文档的读写、编辑和生成。本文将深入探讨Apache POI库的基本概念、特点,以及如何在实际应用中使用它进行文档处理。
424 0
|
4月前
|
SQL 关系型数据库 Apache
Flink CDC 是一个基于 Apache Flink 的开源库
Flink CDC 是一个基于 Apache Flink 的开源库
70 7
|
5月前
|
消息中间件 Apache 流计算
Apache Flink的RabbitMQ connector使用的是`org.apache.flink:flink-sql-connector-rabbitmq`库
Apache Flink的RabbitMQ connector使用的是`org.apache.flink:flink-sql-connector-rabbitmq`库
71 2

推荐镜像

更多