预置分区可以参考下面例子
用HBase Shell建表的时候,除了一些常用的option以外,我们还可以同时建立一些预分区,这样可以预防初次插入数据时热点问题。
通过直接输入create,我们可以看到有如下提示:
- Examples:
-
- hbase> create 't1', {NAME => 'f1', VERSIONS => 5}
- hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
- hbase> # The above in shorthand would be the following:
- hbase> create 't1', 'f1', 'f2', 'f3'
- hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}
- hbase> create 't1', 'f1', {SPLITS => ['10', '20', '30', '40']}
- hbase> create 't1', 'f1', {SPLITS_FILE => 'splits.txt'}
- hbase> # Optionally pre-split the table into NUMREGIONS, using
- hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)
- hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
复制代码
例子中仅给出了要么有普通option,要么是有指定分区等选项,但是没有给出既有普通option(例如VERSIONS,COMPRESSION等),又创建预分区的例子。
如果有这个需求呢?如下对吗?
- create 't', {NAME => 'f', VERSIONS => 1, COMPRESSION => 'SNAPPY', SPLITS => ['10','20','30']
复制代码
运行后发现肯定是不行的。正确的写法应该是这样的:
- create 't', {NAME => 'f', VERSIONS => 1, COMPRESSION => 'SNAPPY'},
- {SPLITS => ['10','20','30']}
复制代码
因为分区时针对全表而非某个Column Family的。
|