hive 在配置单元中创建临时函数

iqxoj9l9  于 2022-12-29  发布在  Hive
关注(0)|答案(1)|浏览(173)

我有一个类似的查询

CREATE TEMPORARY MACRO AAA (input VARCHAR(16))
input||
SUBSTR(
LPAD(
(CASE WHEN SUBSTR(LPAD(input,16,0),15,1) = 1 THEN 2
WHEN SUBSTR(LPAD(input,16,0),15,1) = 2 THEN 4
WHEN SUBSTR(LPAD(input,16,0),15,1) = 3 THEN 6
WHEN SUBSTR(LPAD(input,16,0),15,1) = 4 THEN 8
WHEN SUBSTR(LPAD(input,16,0),15,1) = 5 THEN 10
WHEN SUBSTR(LPAD(input,16,0),15,1) = 6 THEN 1
WHEN SUBSTR(LPAD(input,16,0),15,1) = 7 THEN 3
WHEN SUBSTR(LPAD(input,16,0),15,1) = 8 THEN 5
WHEN SUBSTR(LPAD(input,16,0),15,1) = 9 THEN 7
ELSE 0
END) +
(CASE WHEN SUBSTR(LPAD(input,16,0),16,1) = 1 THEN 1
WHEN SUBSTR(LPAD(input,16,0),16,1) = 2 THEN 2
WHEN SUBSTR(LPAD(input,16,0),16,1) = 3 THEN 3
WHEN SUBSTR(LPAD(input,16,0),16,1) = 4 THEN 4
WHEN SUBSTR(LPAD(input,16,0),16,1) = 5 THEN 5
WHEN SUBSTR(LPAD(input,16,0),16,1) = 6 THEN 6
WHEN SUBSTR(LPAD(input,16,0),16,1) = 7 THEN 7
WHEN SUBSTR(LPAD(input,16,0),16,1) = 8 THEN 8
WHEN SUBSTR(LPAD(input,16,0),16,1) = 9 THEN 9
ELSE 0
END)
,3,0), 3, 1);

但是我想为hive创建一个临时函数。2创建一个临时函数需要修改什么?3它是什么格式的?

pinkon5k

pinkon5k1#

您必须编写自己的UDF。
参考:https://cwiki.apache.org/confluence/display/Hive/HivePlugins
一旦你有了自定义逻辑的jar文件,你可以创建如下函数:
在配置单元版本apache-hive-4.0.0-alpha-1中测试

CREATE TEMPORARY FUNCTION aa_fun as 'AAA' using jar 'hdfs://localhost:9000/user/hive/aaa_func.jar';

select aa_fun('fwfrgwre12a3') fun_res, AAA('fwfrgwre12a3') macro_res;

+----------------+----------------+
|    fun_res     |   macro_res    |
+----------------+----------------+
| fwfrgwre12a33  | fwfrgwre12a33  |
+----------------+----------------+

相关问题