Улей: отражать функцию

Я пытаюсь использовать функцию отражения Hive, которые имеют эту подпись:

reflect(class, method[, arg1[, arg2..]])

Я хочу проверить, если столбец c со значением hello world ! содержит world Итак, я написал:

with a as
(select "hello world !" as c)
select reflect("java.lang.String",c ,"contains", "world") from a

Но это не сработало, потому что не уважает подпись, поэтому я попробовал это

with a as
(select "hello world !" as c)
select reflect(reflect("java.lang.Object","toString",c) ,"contains", "world") from a

Это не сработало! Я хочу знать, как подать заявку reflect функция в данном столбце?

0 ответов

Отражение 2 поможет. См. https://issues.apache.org/jira/browse/HIVE-20007

select reflect2("stackru","length");  
+------+--+
| _c0  |
+------+--+
| 13   |
+------+--+

но hashCode() не будет работать. См. https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFReflect2.java#L86

select reflect2("stackru","hashCode");
Error: Error while compiling statement: FAILED: SemanticException [Error 10016]: Line 1:32 Argument type mismatch '"hashCode"': Use hash() UDF instead of this.
Другие вопросы по тегам