hive UDF 提取文本中的国家名

本文介绍了如何在Hive中创建自定义UDF以提取文本中的国家名称。方法包括分词获取地区名,然后从HDFS上的文件加载国家名集合进行匹配,以确定是否为国家名。
摘要由CSDN通过智能技术生成

要提取文本中的国家名,我的思路是:

1. 先分词,提取出地区名

2. 将国家名通过外部文件的形式读入HASHSET

3. 对第1步中提取的地区名到2中的HASESET进行查询,如果有,则返回


当UDF需要读取外部文件时,一种方法是在注册函数时用add file 先将文件上传,但这条路我尝试之后没有走通; 第二种方法就是把外部文件先上传到HDFS的一个路径上,再在UDF逻辑中直接读取HDFS上的文件,该方法尝试通过了。源代码记录如下:

import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.Segment;
import com.hankcs.hanlp.seg.common.Term;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

import java.io.*;
import java.util.HashSet;
import java.util.List;
import java.util.regex.Pattern;

public class extractCountryName extends UDF {
    public Text evaluate(Text inputStr){
        if(inputStr == null) return null;
        Text res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值