CREATE TEMPORARY FUNCTION UUIDUDF AS 'com.haierubic.bigdata.commons.udf.UUIDUDF' . . . . . . . . . . . . . . . . . > USING JAR 'oss://datalake-01.cn-beijing.oss-dls.aliyuncs.com/config/bigdata-hiveudf-2.1-jar-with-dependencies.jar'; Error: Error while compiling statement: FAILED: HiveAccessControlException Permission denied: user [hdop_upbrain] does not have [TEMPUDFADMIN] privilege on [global=uuidudf] (state=42000,code=40000) 0: jdbc:hive2://10.204.11.45:10000> CREATE FUNCTION UUIDUDF AS 'com.haierubic.bigdata.commons.udf.UUIDUDF' . . . . . . . . . . . . . . . . . > USING JAR 'oss://datalake-01.cn-beijing.oss-dls.aliyuncs.com/config/bigdata-hiveudf-2.1-jar-with-dependencies.jar'; INFO : Compiling command(queryId=hive_20230602122812_92858e15-5136-4e7d-9f51-3020f864aef2): CREATE FUNCTION UUIDUDF AS 'com.haierubic.bigdata.commons.udf.UUIDUDF' USING JAR 'oss://datalake-01.cn-beijing.oss-dls.aliyuncs.com/config/bigdata-hiveudf-2.1-jar-with-dependencies.jar' INFO : Concurrency mode is disabled, not creating a lock manager INFO : Semantic Analysis Completed (retrial = false) INFO : Returning Hive schema: Schema(fieldSchemas:null, properties:null) INFO : Completed compiling command(queryId=hive_20230602122812_92858e15-5136-4e7d-9f51-3020f864aef2); Time taken: 0.067 seconds INFO : Concurrency mode is disabled, not creating a lock manager INFO : Executing command(queryId=hive_20230602122812_92858e15-5136-4e7d-9f51-3020f864aef2): CREATE FUNCTION UUIDUDF AS 'com.haierubic.bigdata.commons.udf.UUIDUDF' USING JAR 'oss://datalake-01.cn-beijing.oss-dls.aliyuncs.com/config/bigdata-hiveudf-2.1-jar-with-dependencies.jar' INFO : Starting task [Stage-0:FUNC] in serial mode INFO : Added [/tmp/b11e4544-4a21-4dcf-87c5-fff8d91021e9_resources/bigdata-hiveudf-2.1-jar-with-dependencies.jar] to class path INFO : Added resources: [oss://datalake-01.cn-beijing.oss-dls.aliyuncs.com/config/bigdata-hiveudf-2.1-jar-with-dependencies.jar] INFO : Completed executing command(queryId=hive_20230602122812_92858e15-5136-4e7d-9f51-3020f864aef2); Time taken: 0.789 seconds INFO : OK INFO : Concurrency mode is disabled, not creating a lock manager No rows affected (0.881 seconds)
时间: 2024-03-01 15:55:48 浏览: 108
根据错误信息显示,您的用户hdop_upbrain没有TEMPUDFADMIN权限,因此无法创建名为UUIDUDF的临时UDF函数。您需要联系Hive管理员或具有TEMPUDFADMIN权限的用户授权hdop_upbrain用户。授权语句可能类似于:
```
GRANT TEMPUDFADMIN ON DATABASE your_database TO USER hdop_upbrain;
```
请注意将your_database替换为您要授权的数据库名称。如果您仍然遇到问题,请提供更多详细信息,我可以为您提供更多帮助。
相关问题
add jar /myJar.udf11.jar 没有问题 create temporary function my_udf as 'myjar.Wuhaha'; 有问题
在Hive中添加自定义Java UDF(User Defined Function)时,通常会按照以下步骤操作:
1. **创建UDF函数**[^1]:
使用`CREATE FUNCTION`语句指定函数名、JAR路径以及要使用的类名,如示例中所示:
```sql
CREATE FUNCTION AES
AS 'com.mingyang.AesDecryptUDF'
USING JAR 'hdfs://nameservice1/user/lib/common_udf.jar',
JAR 'hdfs://nameservice1/user/lib/fastjson2-2.0.16.jar';
```
同样地,对于另一个函数`NormCurrencyType`:
```sql
CREATE FUNCTION NormCurrencyType
AS 'com.mingyang.GetNormCurrencyTypeUDF'
USING JAR 'hdfs://nameservice1/user/lib/GetNormCurrencyTypeUDF.jar';
```
2. **加载Hive**:
添加了新函数后,可能需要重新加载Hive元数据以使这些更改生效。这通常是通过`RELOAD DATABASE`或`MSCK REPAIR TABLE`来完成。
3. **测试UDF**[^2]:
你可以尝试在查询中调用这些函数来测试它们是否正常工作。例如:
```sql
SELECT my_udf('your_input') FROM your_table;
```
然而,当你说`add jar /myJar.udf11.jar`存在问题时,可能是jar文件路径错误、权限不足、类未找到或者jar内函数签名与Hive期望不符等原因。具体问题取决于日志信息。可能需要检查以下几点:
- 确认`/myJar.udf11.jar`的实际路径正确无误。
- Hive用户具有访问该jar文件的权限。
- jar内的函数名称、参数和返回类型是否与创建函数时匹配。
add jar /myJar.udf11.jar 没有问题, create temporary function my_udf as ‘myjar.Wuhaha’; 有问题
在Hive中,添加自定义JAR并创建临时函数(如`CREATE TEMPORARY FUNCTION`)来使用其中的用户定义函数(UDF)是非常常见的操作。从提供的引用来看,有两个步骤:
1. **添加JAR文件**[^1]:
```sql
CREATE FUNCTION AES AS 'com.mingyang.AesDecryptUDF' USING JAR 'hdfs://nameservice1/user/lib/common_udf.jar', JAR 'hdfs://nameservice1/user/lib/fastjson2-2.0.16.jar';
```
这里创建了一个名为AES的函数,使用了来自两个JAR文件中的类。
2. **创建新的UDF函数**[^2]:
```sql
CREATE FUNCTION NormCurrencyType AS 'com.mingyang.GetNormCurrencyTypeUDF' USING JAR 'hdfs://nameservice1/user/lib/GetNormCurrencyTypeUDF.jar';
```
对于您提到的命令`CREATE TEMPORARY FUNCTION my_udf AS 'myjar.Wuhaha'`,如果`myjar`和`Wuhaha`是正确的库名和函数名,理论上应该是可以的。但是,这里可能存在一些潜在问题:
- **路径问题**:确保`myjar.udf11.jar`文件存在且路径正确,与`hdfs://nameservice1/user/lib/`下的路径格式一致。
- **函数名称和类映射**:确认`Wuhaha`是你想要调用的函数的实际全限定名(包括包名),并且它存在于`myjar`中。
- **权限问题**:执行这些操作时,用户可能需要具有足够的权限访问这些JAR文件和调用函数。
如果你遇到问题,可能需要检查上述几个方面。具体错误信息通常会指出问题所在。
阅读全文