在 Hive 中创建临时函数

Create Temporary Function in Hive

提问人:ryan 提问时间:12/27/2022 更新时间:12/28/2022 访问量:266

问:

我有一个这样的查询

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 创建一个临时函数。 需要更改哪些内容,创建临时函数的格式是什么?

SQL 函数 Hive 临时

评论


答:

1赞 Raid 12/28/2022 #1

您必须编写自己的 UDF。

编号 : https://cwiki.apache.org/confluence/display/Hive/HivePlugins

一旦你有了带有自定义逻辑的 jar 文件,你就可以创建如下函数:

在 Hive 版本 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  |
+----------------+----------------+

评论

0赞 ryan 12/28/2022
我通过 Hue 使用 Hive,如何找出“hdfs://localhost:9000/user/hive/aaa_func.jar”并在 Hue 中更改它?
0赞 Raid 12/28/2022
你需要创建它。 就是例子。hdfs://localhost:9000/user/hive/aaa_func.jar
0赞 ryan 12/28/2022
我是 hive 的新手,我必须使用 jar 吗?如果是这样,你是怎么制作的,内容是什么?我们不能只使用以下格式吗,例如 CREATE TEMPORARY FUNCTION TES (input VARCHAR(16))
0赞 Raid 12/29/2022
Hive 中的函数通常是指使用 jar 使用自定义代码。您要做的是宏的候选者
0赞 ryan 1/17/2023
如果我创建一个 jar 文件,我是否仍然可以使用上面的 sql 文件,然后用 jar 扩展名保存它,或者是否必须将其从 sql 查询更改为 java 代码?