Hive 在蜂巢中,';正';功能是什么?
我正在使用存储在配置单元表中的数据开发一个基于项目的推荐程序,在中偶然发现了一个类似的场景。我注意到他对用户/产品的散列使用了Hive 在蜂巢中,';正';功能是什么?,hive,hiveql,Hive,Hiveql,我正在使用存储在配置单元表中的数据开发一个基于项目的推荐程序,在中偶然发现了一个类似的场景。我注意到他对用户/产品的散列使用了POSITIVE函数 我有点搞不懂为什么会有这个函数。表示此函数采用int或double并返回该值: “正(整数/双a)返回一个” 例如: hive> select positive(-1); -1 这是否意味着函数什么都不做?还是我遗漏了一些细微的差别?在引擎盖下面,这个函数是GenericUDFOPPositive.java,它扩展了GenericUDFBas
POSITIVE
函数
我有点搞不懂为什么会有这个函数。表示此函数采用int
或double
并返回该值:
“正(整数/双a)返回一个”
例如:
hive> select positive(-1);
-1
这是否意味着函数什么都不做?还是我遗漏了一些细微的差别?在引擎盖下面,这个函数是
GenericUDFOPPositive.java
,它扩展了GenericUDFBaseUnary.java
positive
也可以简单地称为+
对于数值类型,此函数实际上不起任何作用。对于文本类型,它似乎试图转换为double
,因为GenericUDFBaseUnary.java
包含以下内容:
private PrimitiveTypeInfo deriveResultTypeInfo(PrimitiveTypeInfo typeInfo) {
switch(typeInfo.getPrimitiveCategory()) {
case STRING:
case VARCHAR:
case CHAR:
return TypeInfoFactory.doubleTypeInfo;
default:
return typeInfo;
}
}
然而,这似乎实际上并不起作用,因为对字符串调用positive
只会返回字符串。这意味着,至少文档中该函数的类型签名是错误的,因为它接受的不仅仅是double
和int
不要担心会被搞糊涂,在阅读了源代码并尝试弄清楚这个函数的用途之后,我现在也对它的存在感到困惑