为 Hbase Table 创建拆分的策略。
Strategy to create splits for Hbase Table.
Can any one suggest me strategies while splitting HBASE table. I have data range starts from [a-z].
我将其拆分为 {"e"、"j"、"o"、"u"}。会不会有效率。
你们是如何拆分数据的?
拆分 table 时需要避免热点。例如可以通过加盐来防止。如果您的行分布均匀,那么您的拆分就可以了。
但如果您不控制数据,则最好对行键应用加盐。
中的例子
如果您有这样的行:
foo001
foo002
foo003
foo004
然后你的所有行将进入同一个拆分,这将导致热点。
如果您在行的开头添加随机字符串,例如 "e"、"j"、"o" 或 "u",那么加盐很重要,那么您将平均分配您的数据
e-foo002
u-foo003
而且你的数据分布会更均匀。您可以应用随机或确定性加盐,这取决于您,但确定性加盐更好,因为随机加盐会导致棘手的问题。
作为一个(非常)快速的结论:如果你有均匀分布的数据,你的拆分很好,否则最好应用盐处理
编辑:在 SO 的文档中解释这一点可能是个好主意。
Can any one suggest me strategies while splitting HBASE table. I have data range starts from [a-z].
我将其拆分为 {"e"、"j"、"o"、"u"}。会不会有效率。
你们是如何拆分数据的?
拆分 table 时需要避免热点。例如可以通过加盐来防止。如果您的行分布均匀,那么您的拆分就可以了。
但如果您不控制数据,则最好对行键应用加盐。
中的例子如果您有这样的行:
foo001
foo002
foo003
foo004
然后你的所有行将进入同一个拆分,这将导致热点。
如果您在行的开头添加随机字符串,例如 "e"、"j"、"o" 或 "u",那么加盐很重要,那么您将平均分配您的数据
e-foo002
u-foo003
而且你的数据分布会更均匀。您可以应用随机或确定性加盐,这取决于您,但确定性加盐更好,因为随机加盐会导致棘手的问题。
作为一个(非常)快速的结论:如果你有均匀分布的数据,你的拆分很好,否则最好应用盐处理
编辑:在 SO 的文档中解释这一点可能是个好主意。