最新消息:请随时分享你的乐趣!

Hbase Phoenix 原始加盐的盐值算法

技术博客 磊子 527浏览 0评论

What

phoenix版本为 4

从Phoenix源码剥离出来的.

用法

一般用于Hbase 直接写入Phoenix加盐表中。由于Phoenix表中已经指定了加盐量那么直接写入,头部需要带一个byte的盐值。

代码

入口函数为:rowkey2Salt_new(String rowkey, int bucket_num)


public static byte[] rowkey2Salt_new(String rowkey, int bucket_num) { byte[] bytes = Bytes.toBytes(rowkey); byte[] rs = new byte[bytes.length + 1]; for (int i = 0; i < bytes.length; i++) { rs[i + 1] = bytes[i]; } rs[0] = getSaltingByte(bytes,0,bytes.length,bucket_num); return rs; } // Generate the bucket byte given a byte array and the number of buckets. public static byte getSaltingByte(byte[] value, int offset, int length, int bucketNum) { int hash = calculateHashCode(value, offset, length); return (byte) Math.abs(hash % bucketNum); } private static int calculateHashCode(byte a[], int offset, int length) { if (a == null) return 0; int result = 1; for (int i = offset; i < offset + length; i++) { result = 31 * result + a[i]; } return result; }

转载请注明:印迹. » Hbase Phoenix 原始加盐的盐值算法

发表我的评论
取消评论

表情