当前位置: 首页 > news >正文

Hbase的Rowkey设计

Hbase的Rowkey设计

rowkey设计

    # 1)长度原则#      最大64KB,推荐长度10~100 byte#      最好设为8的倍数,能短则短,rowkey如果太长会影响性能。# 2)唯一原则:rowkey应该具备唯一性# 3)散列原则#      3-1)盐值散列,不能使用时间戳直接作为rowkey#          在rowkey加随机数#      3-2)字符串反转#          时间戳,电话号码(前面位数相同容易分到一个分区)#      3-3)计算分区号,HashMap# ASCII有序,常用列设计Rowkey放在前面
分区设计+Rowkey设计,以手机号码+日期为例

生成分区键,以6个分区
分区号:0,1,2,3,4,5
分区范围:(-∞,0),[0,1),[1,2),[2,3),[3,4),[4,5),[5,+∞)
RowKey前缀:0|,1|,2|,3|,4|,5|
Rowkey范围:(-∞,0|),[0|,1|),[1|,2|),[2|,3|),[2|,3|),[4|,5|),[5|,+∞)

    /*** 生成分区 键(优化)** @param regionCount 分区数* @return*/private byte[][] getSplitKeys(int regionCount) {int splitKeyCount = regionCount - 1;int length = Integer.toString(regionCount - 2).length();byte[][] bs = new byte[splitKeyCount][];List<byte[]> bsList = new ArrayList<>();for (int i = 0; i < splitKeyCount; i++) {String key = NumberUtils.format(i, length) + "|";
//            System.out.println(key);bsList.add(Bytes.toBytes(key));}bsList.toArray(bs);return bs;}

生成分区号
通过手机号+日期生成分区号,得到Rowkey的前缀。

 /*** TODO:计算分区号** @param tel* @param date* @return*/protected String getRagionNum(String tel, String date) {//手机号码的后4位String usercode = tel.substring(tel.length() - 4);//年月日时分秒(年月)String yearMonth = date.substring(0, 6);int userCodeHash = usercode.hashCode();int yearMonthHash = yearMonth.hashCode();//crc检验采用异或算法int crc = Math.abs(userCodeHash ^ yearMonthHash);int regionNum = crc % ValueConstant.REGION_COUNT;int length = Integer.toString(ValueConstant.REGION_COUNT - 2).length();return NumberUtils.format(regionNum, length);}

Rowkey

 String rowkey = getRagionNum(call1, calltime) + "_" + call1 + "_" + calltime;

补零工具类

/*** 将数字格式化为字符串* @param num* @param length* @return*/public static String format(int num,int length){StringBuffer stringBuffer = new StringBuffer();for (int i = 0; i < length; i++) {stringBuffer.append("0");}DecimalFormat df =new DecimalFormat(stringBuffer.toString());return df.format(num);}

相关文章:

Hbase的Rowkey设计

Hbase的Rowkey设计 rowkey设计 # 1&#xff09;长度原则# 最大64KB&#xff0c;推荐长度10~100 byte# 最好设为8的倍数&#xff0c;能短则短&#xff0c;rowkey如果太长会影响性能。# 2&#xff09;唯一原则&#xff1a;rowkey应该具备唯一性# 3&#xff09;散列原则…...

软考机考考试第一批经验分享

由于机考的特殊性&#xff0c;考试环境与传统笔试环境有所不同。下面是与考试环境相关的总结&#xff1a; 草稿纸&#xff1a;考场提供足够数量的草稿纸&#xff0c;每位考生都会分发一张白纸作为草稿纸。在草稿纸上需要写上准考证号。如果不够用&#xff0c;可以向监考老师再次…...

架构简洁之道有感,谈谈软件组件聚合的张力

配图由腾讯混元助手生成 这篇文章介绍了软件架构设计中组件设计思想&#xff0c;围绕“组件间聚合的张力”这个有意思的角度&#xff0c;介绍了概念&#xff0c;并且结合架构设计示例对这个概念进行了进一步阐述。 组件聚合&#xff1f;张力&#xff1f;这标题&#xff0c;有种…...

计算机网络 网络层上 | IP数据报,IP地址,ICMP,ARP等

文章目录 1 网络层的两个层面2 网络协议IP2.1 虚拟互联网络2.2 IP地址2.2.1 固定分类编址方式2.2.2 无分类编制CIDR2.2.3 MAC地址和IP地址区别 2.3 地址解析协议ARP2.3.1 解析过程 2.4 IP数据报格式 3 IP层转发分组流程4 国际控制报文协议ICMP4.1 ICMP格式结构4.2 分类4.2.1 差…...

金智融门户(统一身份认证)同步数据至钉钉通讯录

前言:因全面使用金智融门户和数据资产平台,二十几个信息系统已实现统一身份认证和数据同步,目前单位使用的钉钉尚未同步组织机构和用户信息,职工入职、离职、调岗时都需要手工在钉钉后台操作,一是操作繁琐,二是钉钉通讯录更新不及时或经常遗漏,带来管理问题。通过金智融…...

服务器RAID配置及功能介绍

服务器RAID配置及功能介绍 一、RAID磁盘阵列详解1.RAID磁盘阵列介绍2.RAID 03.RAID14.RAID35.RAID56.RAID67.RAID 10总结阵列卡介绍 一、RAID磁盘阵列详解 1.RAID磁盘阵列介绍 ①是Redundant Array of lndependent Disks的缩写中文简称为独立冗余磁盘阵列。 ②把多块独立的物…...

vue + element 实现鼠标左右滑动效果

我用了element中的走马灯&#xff0b;overflow-x: auto; html &#xff08;复制后格式化一下&#xff09; <div class"scroll" id"entrance"><el-carousel height"150px" :autoplay"false" :loop"false" arrow&q…...

gitlab 安装

1.安装依赖 sudo apt updatesudo apt-get upgradesudo apt-get install curl openssh-server ca-certificates postfix安装gitlab curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash官网下载安装包 要选ubuntu focal 安…...

idea中定时+多数据源配置

因项目要求,需要定时从达梦数据库中取数据,并插入或更新到ORACLE数据库中 1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-…...

Python---多任务的介绍

1. 提问 利用现学知识能够让两个函数或者方法同时执行吗? 不能&#xff0c;因为之前所写的程序都是单任务的&#xff0c;也就是说一个函数或者方法执行完成另外一个函数或者方法才能执行&#xff0c;要想实现这种操作就需要使用多任务。 多任务的最大好处是充分利用CPU资源&…...

Kubernetes 的用法和解析 -- 4

一.Deployment 资源详解 如果Pod出现故障&#xff0c;对应的服务也会挂掉&#xff0c;所以Kubernetes提供了一个Deployment的概念 &#xff0c;目的是让Kubernetes去管理一组Pod的副本&#xff0c;也就是副本集 &#xff0c;这样就能够保证一定数量的副本一直可用&#xff0c;…...

【fabrc.js】 操作鼠标自由绘制图形:矩形、圆形、直线等图形【画图功能】

前言&#xff1a; 在图形编辑器类型的项目当中&#xff0c;通过键盘触发想要绘制的图形类型&#xff0c;然后通过鼠标在fabric画布上自由绘制你想需要的内容。从画基本的矩形、圆形、直线、文本、三角形、折线等功能中&#xff0c;可以扩展出“钢笔path贝塞尔路径”、“多图形组…...

WPF 显示PDF、PDF转成图片

1.NuGet 安装 O2S.Components.PDFView4NET.WPF 2.添加组件 工具箱中&#xff0c;空白处 右键&#xff0c;选择项 WPF组件 界面&#xff0c;选择NuGet安装库对面路径下的 O2S.Components.PDFView4NET.WPF.dll 3.引入组件命名空间&#xff0c;并使用 <Windowxmlns"htt…...

CODESYS的Robotics_PickAndPlace_without_Depictor例程解释

1.简介 在CODESYS的例程中&#xff0c;有一个例程演示了如何控制delta机械手从一个移动的转盘中拾取一个工件&#xff08;ring&#xff0c;圆环&#xff09;&#xff0c;然后放到移动的传送带上的托盘&#xff08;cone&#xff0c;圆锥&#xff09;中。这个例程在【C:\Program…...

通过全流量分析Web业务性能好坏

随着全球商业环境的不断发展和变化&#xff0c;业务性能的重要性愈发凸显。无论是传统实体企业还是纯线上企业&#xff0c;业务性能都是其核心竞争力和稳定运营的关键要素。良好的业务性能不仅可以提升客户满意度、增加市场份额&#xff0c;还可以降低成本、提高效率。 本文章…...

【C语言】自定义类型——枚举、联合体

引言 对枚举、联合体进行介绍&#xff0c;包括枚举的声明、枚举的优点&#xff0c;联合体的声明、联合体的大小。 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言 枚举 枚举…...

大模型自定义算子优化方案学习笔记:CUDA算子定义、算子编译、正反向梯度实现

01算子优化的意义 随着大模型应用的普及以及算力紧缺&#xff0c;下一步对于计算性能的追求一定是技术的核心方向。因为目前大模型的计算逻辑是由一个个独立的算子或者说OP正反向求导实现的&#xff0c;底层往往调用的是GPU提供的CUDA的驱动程序。如果不能对于整个计算过程学习…...

【密码学基础】Diffie-Hellman密钥交换协议

DH介绍 Diffie-Hellman密钥协议算法是一种确保共享密钥安全穿越不安全网络的方法。 这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥&#xff0c;然后可以用这个密钥进行加密和解密。 但是注意&#xff0c;这个密钥交换协议 只能用于密钥的交换&#xff0c;而…...

最新AI绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi【无需魔法使用】&#xff1a; sparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的…...

AI助力DevOps新时代

根据2023年Gitlab全球DevSecOps报告&#xff0c;62%使用AI和ML的开发人员表示他们正在使用AI来检查代码&#xff0c;而2022年这一比例只有51%。 人工智能在 DevOps 中的作用 虽然今年年初&#xff0c;随着GPT的爆火&#xff0c;AI技术逐渐深入人心&#xff0c;但在很早以前&…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...