2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 自定义UDF函数:随机生成N位随机数 包含字母 数字

自定义UDF函数:随机生成N位随机数 包含字母 数字

时间:2023-09-29 16:41:42

相关推荐

自定义UDF函数:随机生成N位随机数 包含字母 数字

按需求随机生成N位长度的随机数,随机数中由字母和数字随机组成。

import java.util.Random;import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop.hive.ql.udf.UDFType;import org.apache.hadoop.io.Text;@UDFType(deterministic = false)public class UDFSysguid extends UDF {private Random random = new Random();private Text result = new Text();public Text evaluate(int length) {result.set(getCharAndNumr(length));return result;}private String getCharAndNumr(int length) {StringBuffer val = new StringBuffer();for (int i = 0; i < length; i++) {//从第一位开始生成随机数,直到长度和length一样String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; // 随机决定输出字母还是数字if ("char".equalsIgnoreCase(charOrNum)) // 字符串{int choice = 65; // 大写字母65,小写字母96val.append((char) (choice + random.nextInt(26)));} else if ("num".equalsIgnoreCase(charOrNum)) // 数字{val.append(String.valueOf(random.nextInt(10)));}}return val.toString();}//main函数测试数据public static void main(String[] args) {UDFSysguid udr = new UDFSysguid();System.out.println(udr.evaluate(12));System.out.println(udr.evaluate(12));System.out.println(udr.evaluate(3));System.out.println(udr.evaluate(3));System.out.println(udr.evaluate(3));}}//测试结果如下,因为是随机,每次执行的结果都不一致,如下分别生成长度为3和12的随机数。07T939TH78P70KTTI3PWWOGL8502LT1N6

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。