Apache hive:如何获取表达式的数据类型?是否有一些 Spark typeof 或 PostgresSQL pg_typeof 函数的类似函数?

问题描述 投票:0回答:1

Apache Spark 中的函数 typeof 和 PostgreSQL 中的pg_typeof 可以获取任何值或表达式的数据类型,例如

select typeof(1=1)

╭───────────────────╮
│ typeof((1 = 1))   │
├───────────────────┤
│ boolean           │
╰───────────────────╯

Apache Hive中有类似的功能吗?

apache-spark hive
1个回答
0
投票

我找到了一种可以逐步实现这一目标的方法:

Hive 的文档建议使用 java_method UDF,可用于在 Hive 上运行 Java 类来获取结果。这是一个通用 UDF,它调用 GenericUDFReflect 类来运行 Java 方法,并使用 Hive 查询中传递的参数。

方法签名:

java_method(class, method[, arg1[, arg2..]])
可以转换为以下

SELECT java_method('java.lang.Object', 'getClass', (1==1));

获取作为参数传递的表达式的 Java 类型。在这种情况下,它应该返回

java.lang.Boolean
作为结果,这是布尔值的 Java 类。

另一种替代方法是使用 Hive 中的

reflect
方法来获得相同的结果:

SELECT reflect((1==1), 'getClass');
© www.soinside.com 2019 - 2024. All rights reserved.