image.png
    方式一:对于类型多的放前面,这样比类型少的更容易打乱()
    分类有20多种类型 排序方式 4种 日期 1种

    1. val put = new Put(writer.reset()
    2. .pack(rankLabelType)
    3. .pack(rankOrderEnum.getOrderType)
    4. .pack(rowkeyDate)
    5. .pack(rank).toByteArray)

    方式二:如果对于查询必须要有全部的字段 ,那么可以对三个字符串进行拼接然后统一Hash(最优)

    对于同类型的数据逻辑上的存储要在一起,物理上的存储不在一起。这样就是最优的存储方式

    1. val put = new Put(writer.reset()
    2. .pack(DigestUtils.sha1Hex(
    3. rankLabelType + "-" +
    4. rankOrderEnum.getOrderType + "-" +
    5. rowkeyDate
    6. )
    7. )
    8. .pack(rank).toByteArray)

    DigestUtils.sha1Hex()对于日期哈希,同一天还是同一个值 能够打乱隔天的数据
    (如果哈希了,比如:20220314和20220315 会存放在不同的RegionServer)