UDF-Java提取身份证内信息
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提取身份证内信息的更多相关文章
- 个人永久性免费-Excel催化剂功能第88波-批量提取pdf文件信息(图片、表格、文本等)
日常办公场合中,除了常规的Excel.Word.PPT等文档外,还有一个不可忽略的文件格式是pdf格式,而对于想从pdf文件中获取信息时,常规方法将变得非常痛苦和麻烦.此篇给大家送一pdf文件提取信息 ...
- java对身份证验证及正则表达式解析
原文地址:http://www.cnblogs.com/zhongshengzhen/ java对身份证验证及正则表达式解析 package service; import java.text.Par ...
- 通过查询数据库中的数据匹配在页面上:(set单条数据属性是在页面上的显示与foreach的不同) 通过ID修改提取位置表信息
ACTION OpenModifyExtractPositionById // set单条数据属性 /* * 通过ID修改提取位置表信息 */ public String OpenModifyEx ...
- Excel提取身份证出生日期②
问题场景 从user表中的身份信息中提取用户的出生日期: 以下方法也可适用于提取其他数据,不仅是身份证信息: 以下图中数据都为测试数据,不具备真实性! 场景一 user表中的18位身份证,提取出生日期 ...
- js从字符串中提取身份证号,连续18位数字
<!DOCTYPE html> <html> <head> <title>提取身份证号</title> <meta charset=& ...
- java获取当前操作系统的信息
java获取当前操作系统的信息 JavaOS虚拟机UnixEXT 从网上收集的一些关于java获取操作系统信息的方法,现在总结一下: 1获取本机的IP地址: private static Strin ...
- PHP提取身份证号码中的生日并验证是否成年的函数
php 提取身份证号码中的生日日期以及确定是否成年的一个函数.可以同时确定15位和18位的身份证,经本人亲测,非常好用,分享函数代码如下: <?php //用php从身份证中提取生日,包括15位 ...
- java获取天气预报的信息
运行效果: 主要功能: 1,jsp页面输入省份和城市 根据条件获取当地的天气信息 2,java代码 利用第三方的省份和城市的路径地址 本工程主要实现java获取天气预报的信息步骤1,创建工程weath ...
- 联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐
联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐 衬衫乐定制网是国内领先的成衣定制机构,专业从事衬衫网络在线定制.高级定制服装的价格不菲,而衬衫乐运用了&qu ...
随机推荐
- Win10 提升系统响应速度
转载百度经验: https://jingyan.baidu.com/article/54b6b9c0e9d61e2d583b4719.html 1.鼠标左键点击开始按钮,然后点击菜单中的设置,进入设置 ...
- 49. Group Anagrams同义词合并
[抄题]: Given an array of strings, group anagrams together. Example: Input: ["eat", "te ...
- 利用django中间件CsrfViewMiddleware防止csrf攻击
一.在django后台处理 1.将django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般新建的django项 ...
- 一致性协议之Paxos算法
一.算法提出背景 Paxos算法需要解决的问题就是如何在一个可能发生诸如宕机或网络异常情况的分布式气筒中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统 ...
- Windows Server 2012 R2 Standard x64 deploy Visual Studio 2015 Application
When I run the Server application on Windows Server 2012 R2 operation system. I meet the error:MSVCP ...
- RAW编程接口
LWIP移植好之后,就要使用它提供的API接口来编写程序.
- ArcGIS中地图导出格式比较(转)
转自:http://blog.sina.com.cn/s/blog_6438c8360101eqfx.html 有人问过这样的问题,用于出挂图的地图格式应该怎么选择?熟悉ArcGIS的用户都知道, ...
- 制作alipay-sdk-java包到本地仓库
项目要用到支付宝的扫码支付,后台使用的maven 问了客服 官方目前没有 maven 的地址只能手动安装到本地了,如果建了maven 服务器也可以上传到服务器上 从支付宝官网上下载sdk 制作本地安装 ...
- query.validate.js使用说明+中文API
转自:http://www.cnblogs.com/hejunrex/archive/2011/11/17/2252193.html 看到一篇好的文章不容易,记录下来以防丢失! 官网地址:http:/ ...
- git的使用和一些命令
1. https://github.com/ 在这个网站注册一个帐号. http://gitref.org/zh/creating/ 待会写.. [命令] a)