首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以在hive UDF中获取数据库名?

是否有一种方法可以在hive UDF中获取数据库名?
EN

Stack Overflow用户
提问于 2017-04-05 05:27:25
回答 1查看 527关注 0票数 2

我在写一个蜂巢UDF。

我必须获得数据库的名称(函数部署在其中)。然后,我需要根据数据库环境从hdfs访问几个文件。请您帮助我从Hive运行HQL查询。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-05 05:34:32

  1. 编写UDF类并准备jar文件

公共类MyHiveUdf扩展了UDF {公共文本计算(字符串文本,字符串dbName) {if(文本==空){返回空;}dbName+{返回新文本“;}

  1. 在蜂巢中使用此UDF查询,如下所述

hive>使用mydb;确定时间: 0.454秒

代码语言:javascript
复制
hive> ADD jar /root/MyUdf.jar;
Added [/root/MyUdf.jar] to class path
Added resources: [/root/MyUdf.jar]

hive> create temporary function myUdfFunction as 'com.hiveudf.strmnp.MyHiveUdf';
OK
Time taken: 0.018 seconds

hive> select myUdfFunction(username,current_database()) from users;
Query ID = root_20170407151010_2ae29523-cd9f-4585-b334-e0b61db2c57b
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_1491484583384_0004, Tracking URL = http://mac127:8088/proxy/application_1491484583384_0004/
Kill Command = /opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hadoop/bin/hadoop job  -kill job_1491484583384_0004
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2017-04-07 15:11:11,376 Stage-1 map = 0%,  reduce = 0%
2017-04-07 15:11:19,766 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 3.12 sec
MapReduce Total cumulative CPU time: 3 seconds 120 msec
Ended Job = job_1491484583384_0004
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1   Cumulative CPU: 3.12 sec   HDFS Read: 21659 HDFS Write: 381120 SUCCESS
Total MapReduce CPU Time Spent: 3 seconds 120 msec
OK

mydb.user1
mydb.user2
mydb.user3

Time taken: 2.137 seconds, Fetched: 3 row(s)
hive>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43222510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档