提问人:ryan 提问时间:12/27/2022 更新时间:12/28/2022 访问量:266
在 Hive 中创建临时函数
Create Temporary Function in Hive
问:
我有一个这样的查询
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 创建一个临时函数。 需要更改哪些内容,创建临时函数的格式是什么?
答:
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 代码?
评论