比如字段如下,需求在hive中可以获取value

sex=1&hight=180&weight=100&sal=2000000
sex=0&hight=176&weight=101&sal=1000000
sex=1&hight=170&weight=102&sal=2000000
sex=0&hight=169&weight=103&sal=3000000
sex=0&hight=188&weight=104&sal=7000000
sex=1&hight=187&weight=105&sal=9000000

方法1 ,自定义hive函数

基本思路打包成json,利用json工具解析

import org.apache.hadoop.hive.ql.exec.UDF;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;public class Key2Value extends UDF {public String evaluate(String str, String key) throws JSONException {if (str.isEmpty() || key.isEmpty()) {return null;}//转为json格式,借用json工具解析String s1 = str.replace("&", ",");String s2 = s1.replace("=", ":");String s3 = "{" + s2 + "}";JSONObject jsonObject = new JSONObject(s3);return jsonObject.getString(key);}public static void main(String[] args) throws JSONException {Key2Value key2Value = new Key2Value();String str = "sex=1&hight=187&weight=105&sal=9000000";String sal = key2Value.evaluate(str, "sal");System.out.println(sal);//9000000}
}

利用maven打包成jar上传到服务器,之后注册,创建临时名称,调用

hive> add jar /mysoft/test.jar;
Added [/mysoft/test.jar] to class path
Added resources: [/mysoft/test.jar]
hive> create temporary function key2Value as 'Key2Value';
OK
Time taken: 0.019 seconds
hive> select key2Value("sex=1&hight=180&weight=100&sal=2000000","sal");2000000

方法2:借用parse_url函数

select parse_url(concat("http://127.0.0.1/:8000/?","sex=1&hight=187&weight=105&sal=9000000"),"QUERY","sal")

结果

9000000

注意事项

hive> create temporary function key2Value as 'Key2Value';
FAILED: Class Key2Value does not implement UDF, GenericUDF, or UDAF
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask

删除jar包后重启hive,再次进行注册

总结:

  • 依据key一区value,可以构建自定义函数或调用parse_url方法,不是url可以先构建url
  • 相比之下,第二种方法好一些,因为维护自定义函数也是比较麻烦的!

Hive依据key获取value相关推荐

  1. php: 通过key获取多维数组中的值

    通过多维数组中的key获取value 假设有以下多维数组 $array = ['zero'=>['e'=>'ss', 'f'=>'dd',],'e'=>'111', 'seco ...

  2. 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )

    文章目录 一.根据 Key 获取 map 集合中对应的值 1.通过 map.Key 方式获取 map 集合中的值 Value 2.通过 map.'Key' 方式获取 map 集合中的值 Value 3 ...

  3. Consul作为配置中心,配置Asp.Net Core应用程序 依据key/value动态更新

    Consul作为配置中心,配置Asp.Net Core应用程序 依据key/value自动更新 https://github.com/wintoncode/Winton.Extensions.Conf ...

  4. chatgpt API key 获取及延续

    目录 问题描述 API key 获取 API key 延续 注册虚拟卡 虚拟卡绑定openAI 账户 虚拟卡注销 参考链接 问题描述 chatgpt目前已被很多人作为辅助工具,使用openai开放的a ...

  5. shell从文件中根据key获取value

    # 根据key获取value(适用于key=value格式的数据) # 调用格式 info key <file> function info(){# 获取key所在的行info_line= ...

  6. Java Map中如何使用key获取value数据呢?

    转自: Java Map中如何使用key获取value数据呢? 下文笔者讲述使用Map.get()方法获取集合中的value值的方法分享,如下所示: 实现思路:借助Map的get方法即可获取value ...

  7. 最新!中国天气网api接口调用,key获取方式,数据请求秘钥获取,城市id获取方法

    以前的天气获取方式已经不支持了,虽然能获取到数据,但是获取到的信息已经不对了. 中国天气网提供的最新接口需要数据请求秘钥key.而且有效期只有7天,用完了还要重新购买,很麻烦,但是获取到的内容绝对是最 ...

  8. java获取json中的某个值_接口测试之json中的key获取

    在很多情况下我们在进行接口测试的时候都会有获取上个接口返回的json数据中的某个key值,然后下个接口调用这个key值.今天给大家讲解一下针对不同类型的json获取某个key的值. 一.首先是单纯ob ...

  9. Java中list.forEach方法的使用示例-根据key获取对应的value

    场景 获取了字典表对象的list,每个对象的属性有key和value. 比如对象1的key=1,value=公众号 对象2的key=2,value=霸道的程序猿 现在已经获取2怎么在这个对象的List ...

最新文章

  1. 阶乘C语言超出范围,阶乘新问题-题解(C语言代码)
  2. [原]执行存储过程后返回影响的行数
  3. 15道使用频率极高的基础算法题
  4. HTML基础(part7)--常用标签之超链接标签
  5. pandas读写各种类型数据
  6. Flutter Exception降到万分之几的秘密 1
  7. 上周回顾:艾妮闹春 Sun/HP高层人士震荡
  8. 数据库切换为mysql中出现的问题:Error loading MySQLdb module.
  9. oracle--索引--
  10. 计算机考研视频哪个机构的好,计算机考研辅导视频十大排名
  11. 电商数字化色彩系统的探索
  12. Linux桌面系统远程访问全解析
  13. 集成简单的科大讯飞文字转语音
  14. 物联时代,二维码技术在各行业有哪些应用?
  15. Gestalt laws
  16. Spring学习笔记4
  17. 新手上路千万记住学会用灯
  18. 贴片电阻有哪几类封装尺寸?
  19. 数据导入与预处理实验二---json格式文件转换
  20. 南开大学软件学院2021年秋季学期研究生计算机网络课程(复习)

热门文章

  1. mysql longbolb_MySql基本数据类型及约束
  2. python中的常量_深入理解Python中的内置常量
  3. 夏天这四件事会耗干你的阳气,尤其是第三件!
  4. spring学习--AOP五个通知
  5. 如何让debuge的dll名字改变_杨石头:如何给品牌取个好名字?
  6. query string parameter前端怎么传参_Substrate 前端开发-1: 用 Polkadot-JS API 轻松搭建前端
  7. python界面开发工具手机版_Python界面编程工具包WxPython
  8. 计算机网络透明网桥的算法,网基课程设计曼切斯特编码模拟透明网桥自习域转发帧算法模拟IP分片模拟.doc...
  9. 用户视图切换为Linux视图,视图_ITPUB博客
  10. java同步方法同步块_java 同步代码块与同步方法