Apache DataFu: LinkedIn开源的Pig UDF库
2024-08-27 14:56:51
介绍
Apache DataFu分两部分,本文介绍的是其Pig UDF的部分。代码在Github上开源(除了代码外。也有一些slides介绍链接)。
DataFu里面是一些Pig的UDF。主要包含这些方面的函数:
bags、geo、hash、linkanalysis、random、sampling、sessions、sets、stats、urls
每方面都相应一个package。
我把全部的函数源代码都浏览了一遍。事实上本身对这些UDF的使用,官方的文档上都有介绍,并且源代码的凝视里也些的非常清晰。所以使用本身是非常easy的。
从实现角度看,继承自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来源(电脑还是手机。什么系统的手机)
全文完 :)
最新文章
- [转]PhpStorm 超强语言模板的支持
- unity5.0材质添加问题
- jQuery构造函数init参数分析(三)
- simple_html_dom使用小结
- 在Windows 上安装SQL Server的一些注意事项
- Ubuntu 14.04配置FTP服务器
- (Android)View.getHeight或getWidth为0时的一些解决方案
- Android 网络框架Volley的使用
- sqlserver跨数据库与跨服务器使用
- ubuntu配置
- hosts文件的作用
- The log scan number (620023:3702:1) passed to log scan in database 'xxxx' is not valid
- Array.apply(null,{length:6}).map()
- mysqld服务启动失败, Failed to restart mysqld.service: Unit not found.
- 关于git经常忘记的:远程仓库关联。
- 关于nginx部署vue项目的两个问题
- Liferay中request
- tensorflow的日常Demo
- Linux CentOS7系统中php安装配置
- Session详解、ASP.NET核心知识(8)
热门文章
- MFC窗口显隐
- Http协议的断点续传下载器,使用观察者模式监视下载进度,使用xml保存下载进度。
- 怎样 TabHostFragment自己定义 tab键(indicator)
- matlab 局部特征检测与提取(问题与特征)
- ORACLE11g R2【RAC+ASM→单实例FS】
- ActiveX控件开发 C#
- ORACLE 11G R2 DG_BROKER 之SWITCH OVER
- amazeui学习笔记--css(常用组件2)--面包屑导航Breadcrumb
- ACdream 1127 Base Station (离线查询+树状数组)
- 【hdu 1403】Longest Common Substring