Hive基于UDF进行文本分词 (4)

后来为了能在外部更新文件,我将其放在了HDFS 上,和AnsjSeg 中的代码一样

第五步:创建UDF 并使用 add jar /Users/liuwenqiang/workspace/code/idea/HiveUDF/target/HiveUDF-0.0.4.jar; create temporary function ansjSeg as 'com.kingcall.bigdata.HiveUDF.AnsjSeg'; select ansjSeg("我是字符串,你是啥"); -- 开启停用词过滤 select ansjSeg("我是字符串,你是啥",1); create temporary function ikSeg as 'com.kingcall.bigdata.HiveUDF.IknalyzerSeg'; select ikSeg("我是字符串,你是啥"); select ikSeg("我是字符串,你是啥",1);

Hive基于UDF进行文本分词

上面方法的第二个参数,就是是否开启停用词过滤,我们使用ikSeg函数演示一下

Hive基于UDF进行文本分词

下面我们尝试获取一下函数的描述信息

Hive基于UDF进行文本分词

如果没有写的话,就是下面的这样的

Hive基于UDF进行文本分词

其它应用场景

通过编写Hive UDF可以轻松帮我们实现大量常见需求,其它应该场景还有:

ip地址转地区:将上报的用户日志中的ip字段转化为国家-省-市格式,便于做地域分布统计分析;

使用Hive SQL计算的标签数据,不想编写Spark程序,可以通过UDF在静态代码块中初始化连接池,利用Hive启动的并行MR任务,并行快速导入大量数据到codis中,应用于一些推荐业务;

还有其它sql实现相对复杂的任务,都可以编写永久Hive UDF进行转化;

总结

这一节我们学习了一个比较常见的UDF,通过实现GenericUDF 抽象类来实现,这一节的重点在于代码的实现以及对GenericUDF类中方法的理解

上面的代码实现上有一个问题,那就是关于停用词的加载,就是我们能不能动态加载停用词呢?

Hive基于UDF进行文本分词

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsspgw.html