apache - 需要 apache Phoenix UDF 指南

标签 apache apache-phoenix

我是 apache phoenix 的新手。我们需要编写 phoenix udfs。但我发现关于它的文档非常有限:在博客上: http://phoenix-hbase.blogspot.in/2013/04/how-to-add-your-own-built-in-function.html 上面的链接只提供了非常简单的功能,只有单一的 i/p 和 o/p 类型。 我一周以来一直在搜索,但找不到任何文档解释如何编写评估函数,该函数需要多个参数并可以根据输入返回不同的数据类型。目前我只能了解phoenix内置函数的源码,比较麻烦。有没有Phoenix UDF的综合文档。

最佳答案

我也在尝试 Phoenix 并且需要编写 UDF。以下是我迄今为止学到的一些东西。

您可以通过以下方式创建接受多个输入的 UDF:

1) 像这样为类定义两个参数
@FunctionParseNode.BuiltInFunction( 名称 = BitmapUnionUDF.NAME, 参数 = { @FunctionParseNode.Argument(allowedTypes = {PBinary.class}), @FunctionParseNode.Argument(allowedTypes = {PBinary.class}) } ) 公共(public)类 BitmapIntersectionLengthUDF 扩展 ScalarFunction {

2) 访问评估函数内的参数
表达式 arg1 = getChildren().get(0); 表达式 arg2 = getChildren().get(1);

3) 要从每个参数的表达式中实际获取字节值:

if (!arg1.evaluate(tuple, ptr)) { 返回假; }

-- 这将 ptr 设置为指向 arg1 的值
4) 检索 arg1 值的字节
ptr.copyBytes()

-- 这将返回一个字节数组,您可以将其转换为适当的类型。

5) 注册jar和函数 CREATE FUNCTION BITMAP_INTERSECTION_LENGTH(varbinary,varbinary) 使用 jar '/path/to/jar' 返回整数为 'com.xxx.yyyy.zzz.BitmapIntersectionLengthUDF';

6) phoenix.apache.org/udf.html有关如何/在何处放置 jar 以及要设置哪些配置的更多提示。

关于apache - 需要 apache Phoenix UDF 指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39151509/

相关文章:

hbase - 无法在 Phoenix HDP2.6 中获取副本 0 的位置

java - 将 RTF 文件转换为 DOC

php.ini - 路径错误?

hadoop - Hbase 上的 phoenix 和 hive ETL

hbase - 凤凰;如何使用案例创建 View

java - 无法使用 JDBC 连接到 Phoenix

linux - 当我启动 apache 并继续杀死我的机器时,如何防止产生大量的 apache 进程?

apache - Varnish -仅在后端关闭时才从缓存发送

apache - 反向代理模式Apache拦截或捕获来自后端服务器的302响应,并在内部重定向,而无需将302响应发送回客户端

hadoop - 我如何从所有抽象中看到 Hadoop 中实际的 Map Reduce 作业?