MaxCompute UDF系列之拼音转换

阅读原文请点击


摘要:汉字转换拼音在日常开发中是个很常见的问题。例如我们伟大的12306,在地名中输入“WH”,就会出现“武汉”“芜湖”“威海”等地名,输入“WUHU”就会出现“芜湖”。 我们在MaxCompute开发中也会遇到此类问题,今天为大家提供一个转换的UDF,下载地址见附件。

汉字转换拼音在日常开发中是个很常见的问题。例如我们伟大的12306,在地名中输入“WH”,就会出现“武汉”“芜湖”“威海”等地名,输入“WUHU”就会出现“芜湖”。

我们在MaxCompute开发中也会遇到此类问题,今天为大家提供一个拼音转换的UDF,下载地址见附件。

效果如下:

MaxCompute UDF代码如下:

packagecom.yinlin.udf.dev;importcom.aliyun.odps.udf.UDF;importnet.sourceforge.pinyin4j.PinyinHelper;importnet.sourceforge.pinyin4j.format.HanyuPinyinCaseType;importnet.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;importnet.sourceforge.pinyin4j.format.HanyuPinyinToneType;importnet.sourceforge.pinyin4j.format.HanyuPinyinVCharType;importnet.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;publicclasspinyinextendsUDF{publicStringevaluate(String inputString,String xtype){HanyuPinyinOutputFormat format=newHanyuPinyinOutputFormat();format.setCaseType(HanyuPinyinCaseType.LOWERCASE);format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);if(inputString==null)inputString="";char[]input=inputString.trim().toCharArray();StringBuffer output=newStringBuffer("");try{for(inti=0;i

注意:依赖拼音pinyin4j.jar;

使用方法:

1、通过Eclipse将pinyin.java编译成Jar包。

2、通过大数据开发套件,上传资源pinyin4j.jar和pinyin_udf.jar;

3、通过大数据开发套件,引用第二步上传的pinyin4j.jar和pinyin_udf.jar资源,注册pinyin函数;

4、通过大数据开发套件新建SQL脚本,输入SQL函数进行测试。

--创建虚拟表,插入一条记录CREATETABLEIFNOTEXISTSdual(id STRING);insertintotabledualselect'1'from(selectcount(1)fromdual)t;---pinyin 汉字转拼音,参数'1'为全拼,参数'2'为首字母selectpinyin('隐林','2')fromyinlin_demo.duallimit1;

到此为止,实验完成。

常见问题

Q:无结果?

我们在创建虚拟dual表的时候,一定要保证表中有数据。

Q:无法找到pinyin函数?

利用大数据开发套件注册pinyin函数的时候需要包名+类名,否则会找不到类。

阿里巴巴大数据-玩家社区https://yq.aliyun.com/teams/6/

---阿里大数据博文,问答,社群,实践,有朋自远方来,不亦说乎……

阅读原文请点击

你可能感兴趣的:(MaxCompute UDF系列之拼音转换)