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 ...
随机推荐
- Spark Streaming原理简析
执行流程 数据的接收 StreamingContext实例化的时候,需要传入一个SparkContext,然后指定要连接的spark matser url,即连接一个spark engine,用于获得 ...
- json操作工具-LitJson
LitJSON是json生成与读取的操作工具,使用很方便并且网上还能找到源码.下面是使用LitJSON的例子: 一.生成json:实例化一个JsonData,然后按照List数组的方式向里面填. Js ...
- easyui-tabs扩展根据自定义属性打开页签
.增加扩展 <script type="text/javascript" > /** * @author {kexb} easyui-tab扩展根据id切换页面 */ ...
- Android动态加载--JVM 类加载机制
动态加载,本质上是通过JVM类加载机制将插件模块加载到宿主apk中,并通过android的相关运行机制,实现插件apk的运行.因此熟悉JVM类加载的机制非常重要. 类加载机制:虚拟机把描述类的数据从C ...
- windows 安装 mysql5.7.17
下载mysql 进入官网:https://www.mysql.com/ 单击[Downloads]选项卡 最下面有个[ MySQL Community Edition (GPL)],单击[Commu ...
- javascrip总结42:属性操作案例: 点击盒子,改变盒子的位置和背景颜色
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- Linux 下几个重要目录解释
linux下把所有的东西都当作文件的,,一个分区想要使用就需要挂载到一个文件夹上,那这个文件夹就叫挂载点,像常用的把 设备/dev/cdrom挂载到/mnt,,,你想问的应该是linux的各目录的解释 ...
- pig(数据流语言和编译器)学习https://www.w3cschool.cn/apache_pig/apache_pig_execution.html
当我们配置了hadoop集群执行的时候 可以通过命令ls进行查看 存储语法 STORE Relation_name INTO ' required_directory_path ' [USING fu ...
- Gym - 100971J ——DFS
Statements Vitaly works at the warehouse. The warehouse can be represented as a grid of n × mcells, ...
- Linq的使用场景简介和认识
一:C#的一个分支Linq 二:学Linq需要有一些基础知识 1. var 隐式类型 2. 匿名类型/匿名方法 3. 自动属性 4. 委托/泛型的委托 5. lambda 6. 扩展方法 7. 对象初 ...