1.使用方法

#获取省份ID
create temporary function getProvIdByCardIdUDF as 'com.st.PersonInfoByCardIdUDF.getProvIdByCardIdUDF'
using jar 'hdfs:///HIVE_UDF/PersonInfoByCardIdUDF.jar';
#获取省份名称
create temporary function getProvNameByCardIdUDF as 'com.st.PersonInfoByCardIdUDF.getProvNameByCardIdUDF' using jar 'hdfs:///HIVE_UDF/PersonInfoByCardIdUDF.jar';
#获取年龄
create temporary function getAgeByCardIdUDF as 'com.st.PersonInfoByCardIdUDF.getAgeByCardIdUDF' using jar 'hdfs:///HIVE_UDF/PersonInfoByCardIdUDF.jar';
#获取生日(YYYY-MM-DD)
create temporary function getBirthDayByCardIdUDF as 'com.st.PersonInfoByCardIdUDF.getBirthDayByCardIdUDF' using jar 'hdfs:///HIVE_UDF/PersonInfoByCardIdUDF.jar';
#获取性别(男、女、null)
create temporary function getGenderByCardIdUDF as 'com.st.PersonInfoByCardIdUDF.getGenderByCardIdUDF' using jar 'hdfs:///HIVE_UDF/PersonInfoByCardIdUDF.jar';

 

2.获取省份ID

package com.st.PersonInfoByCardIdUDF;

import java.util.HashMap;
import java.util.Map; import org.apache.hadoop.hive.ql.exec.UDF; /*
* Name:getProvIdByCardIdUDF
* Author:Jim
* Date:2018-06-29
* Email:764309404@qq.com
* Description:根据身份证获取省份ID
* Example:
*
* */ public class getProvIdByCardIdUDF extends UDF{ public static Map<String, String> map = new HashMap(); //构造函数,获取省份名称
public getProvIdByCardIdUDF() {
map.put("", "北京市");
map.put("", "天津市");
map.put("", "河北省");
map.put("", "山西省");
map.put("", "内蒙古自治区");
map.put("", "辽宁省");
map.put("", "吉林省");
map.put("", "黑龙江省");
map.put("", "上海市");
map.put("", "江苏省");
map.put("", "浙江省");
map.put("", "安徽省");
map.put("", "福建省");
map.put("", "江西省");
map.put("", "山东省");
map.put("", "河南省");
map.put("", "湖北省");
map.put("", "湖南省");
map.put("", "广东省");
map.put("", "广西壮族自治区");
map.put("", "海南省");
map.put("", "重庆市");
map.put("", "四川省");
map.put("", "贵州省");
map.put("", "云南省");
map.put("", "西藏自治区");
map.put("", "陕西省");
map.put("", "甘肃省");
map.put("", "青海省");
map.put("", "宁夏回族自治区");
map.put("", "新疆维吾尔自治区");
map.put("", "台湾省");
map.put("", "香港特别行政区");
map.put("", "澳门特别行政区");
} public String evaluate(String cardid) throws Exception { String provId = null ; cardid = cardid.trim(); if(cardid.length()>=) {
try { String key = cardid.substring(, ); provId = key; }catch(Exception e) { provId = null; }
} return provId;
} }

2.获取省份名称

package com.st.PersonInfoByCardIdUDF;

import java.util.HashMap;
import java.util.Map; import org.apache.hadoop.hive.ql.exec.UDF; /*
* Name:getProvNameByCardIdUDF
* Author:Jim
* Date:2018-06-29
* Email:764309404@qq.com
* Description:根据身份证获取省份名称
* Example:
*
* */ public class getProvNameByCardIdUDF extends UDF{ public static Map<String, String> map = new HashMap(); //构造函数,获取省份名称
public getProvNameByCardIdUDF() {
map.put("11", "北京市");
map.put("12", "天津市");
map.put("13", "河北省");
map.put("14", "山西省");
map.put("15", "内蒙古自治区");
map.put("21", "辽宁省");
map.put("22", "吉林省");
map.put("23", "黑龙江省");
map.put("31", "上海市");
map.put("32", "江苏省");
map.put("33", "浙江省");
map.put("34", "安徽省");
map.put("35", "福建省");
map.put("36", "江西省");
map.put("37", "山东省");
map.put("41", "河南省");
map.put("42", "湖北省");
map.put("43", "湖南省");
map.put("44", "广东省");
map.put("45", "广西壮族自治区");
map.put("46", "海南省");
map.put("50", "重庆市");
map.put("51", "四川省");
map.put("52", "贵州省");
map.put("53", "云南省");
map.put("54", "西藏自治区");
map.put("61", "陕西省");
map.put("62", "甘肃省");
map.put("63", "青海省");
map.put("64", "宁夏回族自治区");
map.put("65", "新疆维吾尔自治区");
map.put("71", "台湾省");
map.put("81", "香港特别行政区");
map.put("82", "澳门特别行政区");
} public String evaluate(String cardid) throws Exception { String provname = null ; cardid = cardid.trim(); if(cardid.length()>=15) {
try { String key = cardid.substring(0, 2); provname = map.get(key); }catch(Exception e) { provname = null; }
} return provname;
} }

3.获取年龄

package com.st.PersonInfoByCardIdUDF;

import java.time.LocalDate;
import java.time.Period; import org.apache.hadoop.hive.ql.exec.UDF; /*
* Name:getAgeByCardIdUDF
* Author:Jim
* Date:2018-06-29
* Email:764309404@qq.com
* Description:根据身份证获取年龄
* Example:
*
* */
public class getAgeByCardIdUDF extends UDF { public int evaluate(String cardId) throws Exception { int age = 0 ; try { LocalDate today = LocalDate.now(); cardId = cardId.trim(); if(cardId.length()==18) { String year_month_date_id = cardId.substring(6,14);
String year = year_month_date_id.substring(0, 4);
String month = year_month_date_id.substring(4, 6);
String date = year_month_date_id.substring(6,8);
LocalDate birthDate = LocalDate.parse(year+"-"+month+"-"+date);
Period p = Period.between(birthDate, today);
age = p.getYears() + 1; }else if (cardId.length()==15) { String year_month_date_id = cardId.substring(6,12);
String year = "19" + year_month_date_id.substring(0, 2);
String month = year_month_date_id.substring(2, 4);
String date = year_month_date_id.substring(4,6);
LocalDate birthDate = LocalDate.parse(year+"-"+month+"-"+date);
Period p = Period.between(birthDate, today);
age = p.getYears() + 1 ; }else {
age = 0;
} }catch(Exception e) { age = 0; }
return age; } }

4.获取生日

package com.st.PersonInfoByCardIdUDF;
import java.time.LocalDate;
import java.time.Period; import org.apache.hadoop.hive.ql.exec.UDF; /*
* Name:getBirthDayByCardIdUDF
* Author:Jim
* Date:2018-06-29
* Email:764309404@qq.com
* Description:根据身份证获取生日 YYYY-MM-DD
* Example:
*
* */ public class getBirthDayByCardIdUDF extends UDF{ public String evaluate(String cardId) throws Exception { String birthday = null; try
{
cardId = cardId.trim(); if(cardId.length()==18) {
String year_month_date_id = cardId.substring(6,14);
String year = year_month_date_id.substring(0, 4);
String month = year_month_date_id.substring(4, 6);
String date = year_month_date_id.substring(6,8);
//LocalDate birthDate = LocalDate.parse(year+"-"+month+"-"+date);
birthday = year+"-"+month+"-"+date; }else if (cardId.length()==15) {
String year_month_date_id = cardId.substring(6,12);
String year = "19" + year_month_date_id.substring(0, 2);
String month = year_month_date_id.substring(2, 4);
String date = year_month_date_id.substring(4,6);
//LocalDate birthDate = LocalDate.parse(year+"-"+month+"-"+date);
birthday = year+"-"+month+"-"+date; }else {
birthday = null;
}
}catch(Exception e) { birthday = null; }
return birthday; } }

5.获取性别

package com.st.PersonInfoByCardIdUDF;

import org.apache.hadoop.hive.ql.exec.UDF;

/*
* Name:getBirthDayByCardIdUDF
* Author:Jim
* Date:2018-06-29
* Email:764309404@qq.com
* Description:根据身份证获取生日 YYYY-MM-DD
* Example:
* 返回值:
* 1:男
* 2:女
* 3.NULL
* */ public class getGenderByCardIdUDF extends UDF{ public String evaluate(String cardId) throws Exception { String gender = null;
try {
cardId = cardId.trim();
if(cardId.length()==15 || cardId.length() == 18 ) {
int s = cardId.charAt(cardId.length()-2) - '0';
if(s%2==0) {
gender = "女";
}else {
gender = "男";
}
}
}catch(Exception e) {
gender = null;
} return gender; } }

UDF-Java提取身份证内信息的更多相关文章

  1. 个人永久性免费-Excel催化剂功能第88波-批量提取pdf文件信息(图片、表格、文本等)

    日常办公场合中,除了常规的Excel.Word.PPT等文档外,还有一个不可忽略的文件格式是pdf格式,而对于想从pdf文件中获取信息时,常规方法将变得非常痛苦和麻烦.此篇给大家送一pdf文件提取信息 ...

  2. java对身份证验证及正则表达式解析

    原文地址:http://www.cnblogs.com/zhongshengzhen/ java对身份证验证及正则表达式解析 package service; import java.text.Par ...

  3. 通过查询数据库中的数据匹配在页面上:(set单条数据属性是在页面上的显示与foreach的不同) 通过ID修改提取位置表信息

    ACTION   OpenModifyExtractPositionById // set单条数据属性 /* * 通过ID修改提取位置表信息 */ public String OpenModifyEx ...

  4. Excel提取身份证出生日期②

    问题场景 从user表中的身份信息中提取用户的出生日期: 以下方法也可适用于提取其他数据,不仅是身份证信息: 以下图中数据都为测试数据,不具备真实性! 场景一 user表中的18位身份证,提取出生日期 ...

  5. js从字符串中提取身份证号,连续18位数字

    <!DOCTYPE html> <html> <head> <title>提取身份证号</title> <meta charset=& ...

  6. java获取当前操作系统的信息

    java获取当前操作系统的信息 JavaOS虚拟机UnixEXT  从网上收集的一些关于java获取操作系统信息的方法,现在总结一下: 1获取本机的IP地址: private static Strin ...

  7. PHP提取身份证号码中的生日并验证是否成年的函数

    php 提取身份证号码中的生日日期以及确定是否成年的一个函数.可以同时确定15位和18位的身份证,经本人亲测,非常好用,分享函数代码如下: <?php //用php从身份证中提取生日,包括15位 ...

  8. java获取天气预报的信息

    运行效果: 主要功能: 1,jsp页面输入省份和城市 根据条件获取当地的天气信息 2,java代码 利用第三方的省份和城市的路径地址 本工程主要实现java获取天气预报的信息步骤1,创建工程weath ...

  9. 联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐

    联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐 衬衫乐定制网是国内领先的成衣定制机构,专业从事衬衫网络在线定制.高级定制服装的价格不菲,而衬衫乐运用了&qu ...

随机推荐

  1. 基于mapper插件编写的可定制代码生成基本框架(springboot)

    先看一下,基本结构图: 特征,提供 最佳实践的项目结构.配置文件.精简的POM 统一响应结果封装 统一异常处理 统一接口登录认证 常用基础方法抽象封装 Controller.service.dao层基 ...

  2. SpringMVC单元测试-MockMvc

    一 简介 MockMvc实现对Http请求的模拟,可以方便对Controller进行测试,使得测试速度快.不依赖网络环境,而且提供验证的工具,使得请求的验证统一而且很方便.   二 常见使用方式 1  ...

  3. Docker CE部署

    一.概述 Docker 在1.13版本之后,从2017年的3月1日开始,版本命名规则变为如下: 项目 说明 版本格式 YY.MM Stable 每个季度发行 Edge版本 每个月发行 同时Docker ...

  4. 解题报告Best Time to Buy and Sell Stock with Cooldown

    题目 Say you have an array for which the ith element is the price of a given stock on day i. Design an ...

  5. VS2017在Release下编译错误C1001

    在使用VS2017编译C程序时,Debug模式下编译链接执行都没有问题,但是一转到Release模式下就出现下列编译链接错误(IDE:VS2017 /VC++/MFC程序,目标平台x86+Win32位 ...

  6. python3--多目录之间的协作的一些必备知识

    # Auther: Aaron Fan # 动态获取执行文件的相对路径路径:print(__file__) #动态获取执行文件的绝对路径:import osfile_path = os.path.ab ...

  7. 封装request.get_params批量取值

    @json_request_validator(post_schema) 装饰器 from functools import wraps from schema import SchemaError ...

  8. [GO]使用bufio的文件读取方式

    package main import ( "os" "fmt" "bufio" "io" ) func ReadFil ...

  9. Yii项目开发总结

    学习Yii很久了,一直做的是小案例,自以为学的还不错.直到最近用Yii开发了一个非常简单的CMS,一路下来,磕磕绊绊,才知自己不足.加上最近正学习着偏架构方面的知识.特此总结一下.小白经验,大神轻拍, ...

  10. 在Linux上编译Hadoop-2.4.0

    目录 目录 1 1. 前言 1 2. 安装依赖 1 2.1. 安装ProtocolBuffer 2 2.2. 安装CMake 2 2.3. 安装JDK 2 2.4. 安装Maven 3 3. 编译Ha ...