package com.gome.dw.udf;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import java.util.Map;
/**
* 获取指定json的第n个值
*/
@Description(name = "GetJsonNValue", //方法名
value = "_FUNC_(data_str,num_int)", //参数类型
extended = "Example:\n" //调用示例
+ "select GetJsonNValue('{\"ACCOUNT_MANAGE_FEE\":{\"amount\":62,\"feeCode\":\"ACCOUNT_MANAGE_FEE\"}}',1);\n"
+ "{\"amount\":62,\"feeCode\":\"ACCOUNT_MANAGE_FEE\"}") //返回结果示例
public class GetJsonNValue extends UDF {
public String evaluate(String data, int num) {
try {
Map f = (Map)JSON.parse(data);
int n=1;
for (Object item:f.keySet()){
if(n==num){
JSONObject f2=(JSONObject)f.get(item);
return f2.toJSONString();
记一次写hive-udf历程
最新推荐文章于 2023-11-01 17:19:11 发布