1.使用方法
在hive中加载jar包,调用udf函数
#从名字中获取姓add jar ${scriptDir}/GetLastNameUDF.jar;create temporary function getLastName as 'com.st.udf.GetLastNameUDF';#或者(前提是将GetLastNameUDF.jar包上传到/HIVE_UDF目录)create temporary function getLastName as 'com.st.udf.GetLastNameUDF' using jar 'hdfs:///HIVE_UDF/GetLastNameUDF.jar';
select '江XX',getLastName('江XX') from dual;
2.UDF开发
package com.st.udf;import java.util.ArrayList;import org.apache.hadoop.hive.ql.exec.UDF;/** * * @author zjdc * * 获取姓名中的姓氏 * */public class GetLastNameUDF extends UDF{ public static ArrayList lastNameList = new ArrayList(); /** * 构造函数,加载姓氏数据 */ public GetLastNameUDF() { lastNameList.add("1,赵"); lastNameList.add("2,钱"); lastNameList.add("3,孙"); lastNameList.add("4,李"); lastNameList.add("5,周"); lastNameList.add("6,吴"); lastNameList.add("7,郑"); lastNameList.add("8,王"); lastNameList.add("9,冯"); lastNameList.add("10,陈"); lastNameList.add("11,褚"); lastNameList.add("12,卫"); lastNameList.add("13,蒋"); lastNameList.add("14,沈"); lastNameList.add("15,韩"); lastNameList.add("16,杨"); lastNameList.add("17,朱"); lastNameList.add("18,秦"); lastNameList.add("19,尤"); lastNameList.add("20,许"); lastNameList.add("21,何"); lastNameList.add("22,吕"); lastNameList.add("23,施"); lastNameList.add("24,张"); lastNameList.add("25,孔"); lastNameList.add("26,曹"); lastNameList.add("27,严"); lastNameList.add("28,华"); lastNameList.add("29,金"); lastNameList.add("30,魏"); lastNameList.add("31,陶"); lastNameList.add("32,姜"); lastNameList.add("33,戚"); lastNameList.add("34,谢"); lastNameList.add("35,邹"); lastNameList.add("36,喻"); lastNameList.add("37,柏"); lastNameList.add("38,水"); lastNameList.add("39,窦"); lastNameList.add("40,章"); lastNameList.add("41,云"); lastNameList.add("42,苏"); lastNameList.add("43,潘"); lastNameList.add("44,葛"); lastNameList.add("45,奚"); lastNameList.add("46,范"); lastNameList.add("47,彭"); lastNameList.add("48,郎"); lastNameList.add("49,鲁"); lastNameList.add("50,韦"); lastNameList.add("51,昌"); lastNameList.add("52,马"); lastNameList.add("53,苗"); lastNameList.add("54,凤"); lastNameList.add("55,花"); lastNameList.add("56,方"); lastNameList.add("57,俞"); lastNameList.add("58,任"); lastNameList.add("59,袁"); lastNameList.add("60,柳"); lastNameList.add("61,酆"); lastNameList.add("62,鲍"); lastNameList.add("63,史"); lastNameList.add("64,唐"); lastNameList.add("65,费"); lastNameList.add("66,廉"); lastNameList.add("67,岑"); lastNameList.add("68,薛"); lastNameList.add("69,雷"); lastNameList.add("70,贺"); lastNameList.add("71,倪"); lastNameList.add("72,汤"); lastNameList.add("73,滕"); lastNameList.add("74,殷"); lastNameList.add("75,罗"); lastNameList.add("76,毕"); lastNameList.add("77,郝"); lastNameList.add("78,邬"); lastNameList.add("79,安"); lastNameList.add("80,常"); lastNameList.add("81,乐"); lastNameList.add("82,于"); lastNameList.add("83,时"); lastNameList.add("84,傅"); lastNameList.add("85,皮"); lastNameList.add("86,卞"); lastNameList.add("87,齐"); lastNameList.add("88,康"); lastNameList.add("89,伍"); lastNameList.add("90,余"); lastNameList.add("91,元"); lastNameList.add("92,卜"); lastNameList.add("93,顾"); lastNameList.add("94,孟"); lastNameList.add("95,平"); lastNameList.add("96,黄"); lastNameList.add("97,和"); lastNameList.add("98,穆"); lastNameList.add("99,萧"); lastNameList.add("100,尹"); lastNameList.add("101,姚"); lastNameList.add("102,邵"); lastNameList.add("103,堪"); lastNameList.add("104,汪"); lastNameList.add("105,祁"); lastNameList.add("106,毛"); lastNameList.add("107,禹"); lastNameList.add("108,狄"); lastNameList.add("109,米"); lastNameList.add("110,贝"); lastNameList.add("111,明"); lastNameList.add("112,臧"); lastNameList.add("113,计"); lastNameList.add("114,伏"); lastNameList.add("115,成"); lastNameList.add("116,戴"); lastNameList.add("117,谈"); lastNameList.add("118,宋"); lastNameList.add("119,茅"); lastNameList.add("120,庞"); lastNameList.add("121,熊"); lastNameList.add("122,纪"); lastNameList.add("123,舒"); lastNameList.add("124,屈"); lastNameList.add("125,项"); lastNameList.add("126,祝"); lastNameList.add("127,董"); lastNameList.add("128,粱"); lastNameList.add("129,杜"); lastNameList.add("130,阮"); lastNameList.add("131,蓝"); lastNameList.add("132,闵"); lastNameList.add("133,席"); lastNameList.add("134,季"); lastNameList.add("135,麻"); lastNameList.add("136,强"); lastNameList.add("137,贾"); lastNameList.add("138,路"); lastNameList.add("139,娄"); lastNameList.add("140,危"); lastNameList.add("141,江"); lastNameList.add("142,童"); lastNameList.add("143,颜"); lastNameList.add("144,郭"); lastNameList.add("145,梅"); lastNameList.add("146,盛"); lastNameList.add("147,林"); lastNameList.add("148,刁"); lastNameList.add("149,钟"); lastNameList.add("150,徐"); lastNameList.add("151,邱"); lastNameList.add("152,骆"); lastNameList.add("153,高"); lastNameList.add("154,夏"); lastNameList.add("155,蔡"); lastNameList.add("156,田"); lastNameList.add("157,樊"); lastNameList.add("158,胡"); lastNameList.add("159,凌"); lastNameList.add("160,霍"); lastNameList.add("161,虞"); lastNameList.add("162,万"); lastNameList.add("163,支"); lastNameList.add("164,柯"); lastNameList.add("165,昝"); lastNameList.add("166,管"); lastNameList.add("167,卢"); lastNameList.add("168,莫"); lastNameList.add("169,经"); lastNameList.add("170,房"); lastNameList.add("171,裘"); lastNameList.add("172,缪"); lastNameList.add("173,干"); lastNameList.add("174,解"); lastNameList.add("175,应"); lastNameList.add("176,宗"); lastNameList.add("177,丁"); lastNameList.add("178,宣"); lastNameList.add("179,贲"); lastNameList.add("180,邓"); lastNameList.add("181,郁"); lastNameList.add("182,单"); lastNameList.add("183,杭"); lastNameList.add("184,洪"); lastNameList.add("185,包"); lastNameList.add("186,诸"); lastNameList.add("187,左"); lastNameList.add("188,石"); lastNameList.add("189,崔"); lastNameList.add("190,吉"); lastNameList.add("191,钮"); lastNameList.add("192,龚"); lastNameList.add("193,程"); lastNameList.add("194,嵇"); lastNameList.add("195,邢"); lastNameList.add("196,滑"); lastNameList.add("197,裴"); lastNameList.add("198,陆"); lastNameList.add("199,荣"); lastNameList.add("200,翁"); lastNameList.add("201,荀"); lastNameList.add("202,羊"); lastNameList.add("203,於"); lastNameList.add("204,惠"); lastNameList.add("205,甄"); lastNameList.add("206,麴"); lastNameList.add("207,家"); lastNameList.add("208,封"); lastNameList.add("209,芮"); lastNameList.add("210,羿"); lastNameList.add("211,储"); lastNameList.add("212,靳"); lastNameList.add("213,汲"); lastNameList.add("214,邴"); lastNameList.add("215,糜"); lastNameList.add("216,松"); lastNameList.add("217,井"); lastNameList.add("218,段"); lastNameList.add("219,富"); lastNameList.add("220,巫"); lastNameList.add("221,乌"); lastNameList.add("222,焦"); lastNameList.add("223,巴"); lastNameList.add("224,弓"); lastNameList.add("225,牧"); lastNameList.add("226,隗"); lastNameList.add("227,山"); lastNameList.add("228,谷"); lastNameList.add("229,车"); lastNameList.add("230,侯"); lastNameList.add("231,宓"); lastNameList.add("232,蓬"); lastNameList.add("233,全"); lastNameList.add("234,郗"); lastNameList.add("235,班"); lastNameList.add("236,仰"); lastNameList.add("237,秋"); lastNameList.add("238,仲"); lastNameList.add("239,伊"); lastNameList.add("240,宫"); lastNameList.add("241,宁"); lastNameList.add("242,仇"); lastNameList.add("243,栾"); lastNameList.add("244,暴"); lastNameList.add("245,甘"); lastNameList.add("246,钭"); lastNameList.add("247,厉"); lastNameList.add("248,戎"); lastNameList.add("249,祖"); lastNameList.add("250,武"); lastNameList.add("251,符"); lastNameList.add("252,刘"); lastNameList.add("253,景"); lastNameList.add("254,詹"); lastNameList.add("255,束"); lastNameList.add("256,龙"); lastNameList.add("257,叶"); lastNameList.add("258,幸"); lastNameList.add("259,司"); lastNameList.add("260,韶"); lastNameList.add("261,郜"); lastNameList.add("262,黎"); lastNameList.add("263,蓟"); lastNameList.add("264,薄"); lastNameList.add("265,印"); lastNameList.add("266,宿"); lastNameList.add("267,白"); lastNameList.add("268,怀"); lastNameList.add("269,蒲"); lastNameList.add("270,邰"); lastNameList.add("271,从"); lastNameList.add("272,鄂"); lastNameList.add("273,索"); lastNameList.add("274,咸"); lastNameList.add("275,籍"); lastNameList.add("276,赖"); lastNameList.add("277,卓"); lastNameList.add("278,蔺"); lastNameList.add("279,屠"); lastNameList.add("280,蒙"); lastNameList.add("281,池"); lastNameList.add("282,乔"); lastNameList.add("283,阴"); lastNameList.add("284,欎"); lastNameList.add("285,胥"); lastNameList.add("286,能"); lastNameList.add("287,苍"); lastNameList.add("288,双"); lastNameList.add("289,闻"); lastNameList.add("290,莘"); lastNameList.add("291,党"); lastNameList.add("292,翟"); lastNameList.add("293,谭"); lastNameList.add("294,贡"); lastNameList.add("295,劳"); lastNameList.add("296,逄"); lastNameList.add("297,姬"); lastNameList.add("298,申"); lastNameList.add("299,扶"); lastNameList.add("300,堵"); lastNameList.add("301,冉"); lastNameList.add("302,宰"); lastNameList.add("303,郦"); lastNameList.add("304,雍"); lastNameList.add("305,舄"); lastNameList.add("306,璩"); lastNameList.add("307,桑"); lastNameList.add("308,桂"); lastNameList.add("309,濮"); lastNameList.add("310,牛"); lastNameList.add("311,寿"); lastNameList.add("312,通"); lastNameList.add("313,边"); lastNameList.add("314,扈"); lastNameList.add("315,燕"); lastNameList.add("316,冀"); lastNameList.add("317,郏"); lastNameList.add("318,浦"); lastNameList.add("319,尚"); lastNameList.add("320,农"); lastNameList.add("321,温"); lastNameList.add("322,别"); lastNameList.add("323,庄"); lastNameList.add("324,晏"); lastNameList.add("325,柴"); lastNameList.add("326,瞿"); lastNameList.add("327,阎"); lastNameList.add("328,充"); lastNameList.add("329,慕"); lastNameList.add("330,连"); lastNameList.add("331,茹"); lastNameList.add("332,习"); lastNameList.add("333,宦"); lastNameList.add("334,艾"); lastNameList.add("335,鱼"); lastNameList.add("336,容"); lastNameList.add("337,向"); lastNameList.add("338,古"); lastNameList.add("339,易"); lastNameList.add("340,慎"); lastNameList.add("341,戈"); lastNameList.add("342,廖"); lastNameList.add("343,庚"); lastNameList.add("344,终"); lastNameList.add("345,暨"); lastNameList.add("346,居"); lastNameList.add("347,衡"); lastNameList.add("348,步"); lastNameList.add("349,都"); lastNameList.add("350,耿"); lastNameList.add("351,满"); lastNameList.add("352,弘"); lastNameList.add("353,匡"); lastNameList.add("354,国"); lastNameList.add("355,文"); lastNameList.add("356,寇"); lastNameList.add("357,广"); lastNameList.add("358,禄"); lastNameList.add("359,阙"); lastNameList.add("360,东"); lastNameList.add("361,殴"); lastNameList.add("362,殳"); lastNameList.add("363,沃"); lastNameList.add("364,利"); lastNameList.add("365,蔚"); lastNameList.add("366,越"); lastNameList.add("367,夔"); lastNameList.add("368,隆"); lastNameList.add("369,师"); lastNameList.add("370,巩"); lastNameList.add("371,厍"); lastNameList.add("372,聂"); lastNameList.add("373,晁"); lastNameList.add("374,勾"); lastNameList.add("375,敖"); lastNameList.add("376,融"); lastNameList.add("377,冷"); lastNameList.add("378,訾"); lastNameList.add("379,辛"); lastNameList.add("380,阚"); lastNameList.add("381,那"); lastNameList.add("382,简"); lastNameList.add("383,饶"); lastNameList.add("384,空"); lastNameList.add("385,曾"); lastNameList.add("386,毋"); lastNameList.add("387,沙"); lastNameList.add("388,乜"); lastNameList.add("389,养"); lastNameList.add("390,鞠"); lastNameList.add("391,须"); lastNameList.add("392,丰"); lastNameList.add("393,巢"); lastNameList.add("394,关"); lastNameList.add("395,蒯"); lastNameList.add("396,相"); lastNameList.add("397,查"); lastNameList.add("398,後"); lastNameList.add("399,荆"); lastNameList.add("400,红"); lastNameList.add("401,游"); lastNameList.add("402,竺"); lastNameList.add("403,权"); lastNameList.add("404,逯"); lastNameList.add("405,盖"); lastNameList.add("406,益"); lastNameList.add("407,桓"); lastNameList.add("408,公"); lastNameList.add("409,万俟"); lastNameList.add("410,司马"); lastNameList.add("411,上官"); lastNameList.add("412,欧阳"); lastNameList.add("413,夏侯"); lastNameList.add("414,诸葛"); lastNameList.add("415,闻人"); lastNameList.add("416,东方"); lastNameList.add("417,赫连"); lastNameList.add("418,皇甫"); lastNameList.add("419,尉迟"); lastNameList.add("420,公羊"); lastNameList.add("421,澹台"); lastNameList.add("422,公冶"); lastNameList.add("423,宗政"); lastNameList.add("424,濮阳"); lastNameList.add("425,淳于"); lastNameList.add("426,单于"); lastNameList.add("427,太叔"); lastNameList.add("428,申屠"); lastNameList.add("429,公孙"); lastNameList.add("430,仲孙"); lastNameList.add("431,轩辕"); lastNameList.add("432,令狐"); lastNameList.add("433,钟离"); lastNameList.add("434,宇文"); lastNameList.add("435,长孙"); lastNameList.add("436,慕容"); lastNameList.add("437,鲜于"); lastNameList.add("438,闾丘"); lastNameList.add("439,司徒"); lastNameList.add("440,司空"); lastNameList.add("441,亓官"); lastNameList.add("442,司寇"); lastNameList.add("443,仉"); lastNameList.add("444,督"); lastNameList.add("445,子车"); lastNameList.add("446,颛孙"); lastNameList.add("447,端木"); lastNameList.add("448,巫马"); lastNameList.add("449,公西"); lastNameList.add("450,漆雕"); lastNameList.add("451,乐正"); lastNameList.add("452,壤驷"); lastNameList.add("453,公良"); lastNameList.add("454,拓拔"); lastNameList.add("455,夹谷"); lastNameList.add("456,宰父"); lastNameList.add("457,谷粱"); lastNameList.add("458,晋楚"); lastNameList.add("459,闫法"); lastNameList.add("460,汝"); lastNameList.add("461,鄢"); lastNameList.add("462,涂"); lastNameList.add("463,钦"); lastNameList.add("464,段干"); lastNameList.add("465,百里"); lastNameList.add("466,东郭"); lastNameList.add("467,南门"); lastNameList.add("468,呼延"); lastNameList.add("469,归"); lastNameList.add("470,海"); lastNameList.add("471,羊舌"); lastNameList.add("472,微生"); lastNameList.add("473,岳"); lastNameList.add("474,帅"); lastNameList.add("475,缑"); lastNameList.add("476,亢"); lastNameList.add("477,况"); lastNameList.add("478,后"); lastNameList.add("479,有"); lastNameList.add("480,琴"); lastNameList.add("481,梁丘"); lastNameList.add("482,左丘"); lastNameList.add("483,东门"); lastNameList.add("484,西门"); lastNameList.add("485,商"); lastNameList.add("486,牟"); lastNameList.add("487,佘"); lastNameList.add("488,佴"); lastNameList.add("489,伯"); lastNameList.add("490,赏"); lastNameList.add("491,南宫"); lastNameList.add("492,墨"); lastNameList.add("493,哈"); lastNameList.add("494,谯"); lastNameList.add("495,笪"); lastNameList.add("496,年"); lastNameList.add("497,爱"); lastNameList.add("498,阳"); lastNameList.add("499,佟"); lastNameList.add("500,第五"); lastNameList.add("501,言"); lastNameList.add("502,福"); } public String evaluate(String name) throws Exception{ String result = ""; name = name.trim(); for(int i = 0; i < lastNameList.size(); i++) { String line = (String)lastNameList.get(i); String lastNameId = line.split(",")[0]; String lastName = line.split(",")[1]; if(name.startsWith(lastName)) { result = lastName; break; } } return result; } }