在将reduce()输出加载到HBase shell之前,是否需要在HBase shell中定义目标表?

在将reduce()输出加载到HBase shell之前,是否需要在HBase shell中定义目标表?,hbase,Hbase,我已安装HBase,但尚未创建任何表来加载数据。现在,如果我们想将reduce()的输出加载到HBase表中,我们需要在HBase shell中明确地创建表并提及列名,还是可以在MapReduce程序中这样做 您需要提前准备好桌子。从shell中创建它,或者添加代码在作业本身中创建表。这是如何通过代码实现的: HBaseConfiguration conf = HBaseConfiguration.get();  HBaseAdmin hbase = new HBaseAdmin(conf);

我已安装HBase,但尚未创建任何表来加载数据。现在,如果我们想将reduce()的输出加载到HBase表中,我们需要在HBase shell中明确地创建表并提及列名,还是可以在MapReduce程序中这样做

您需要提前准备好桌子。从shell中创建它,或者添加代码在作业本身中创建表。这是如何通过代码实现的:

HBaseConfiguration conf = HBaseConfiguration.get(); 
HBaseAdmin hbase = new HBaseAdmin(conf);
HTableDescriptor desc = new HTableDescriptor("TEST");
HColumnDescriptor meta = new HColumnDescriptor("cf".getBytes());
desc.addFamily(meta);
hbase.createTable(desc);
创建表时不需要指定列,但列族是必需的。可以在放置数据时添加列名

RDBMS中的列与HBase中的列族之间的区别在于,列只是一组特定简单类型的数据值,表的每行一个,而列族定义了更多,例如压缩、要维护的版本数、生存时间、,最大和最小版本数等

柱族的核心只是相似柱的集合。这有助于在数据之间建立语义或主题边界

当您说表中需要两列时,您可以将这两列都放在一个族中,也可以将这两列都放在两个不同的族中。但是拥有较少的家庭是明智的,所以你应该只选择一个家庭

hbase(main):004:0> create 'demo', 'cf'
现在,此表中需要两列:

hbase(main):006:0> put 'demo', 'row1', 'cf:fld1', 'value1'

hbase(main):006:0> put 'demo', 'row1', 'cf:fld2', 'value2'
查看如何在Put时动态指定列。另外,请注意,族只是
cf
,而不是
cf:fld1
cf:fld2
。冒号字符(:)根据列名分隔列族,它们一起称为
列限定符


HTH

您需要提前准备好表格。从shell中创建它,或者添加代码在作业本身中创建表。这是如何通过代码实现的:

HBaseConfiguration conf = HBaseConfiguration.get(); 
HBaseAdmin hbase = new HBaseAdmin(conf);
HTableDescriptor desc = new HTableDescriptor("TEST");
HColumnDescriptor meta = new HColumnDescriptor("cf".getBytes());
desc.addFamily(meta);
hbase.createTable(desc);
创建表时不需要指定列,但列族是必需的。可以在放置数据时添加列名

RDBMS中的列与HBase中的列族之间的区别在于,列只是一组特定简单类型的数据值,表的每行一个,而列族定义了更多,例如压缩、要维护的版本数、生存时间、,最大和最小版本数等

柱族的核心只是相似柱的集合。这有助于在数据之间建立语义或主题边界

当您说表中需要两列时,您可以将这两列都放在一个族中,也可以将这两列都放在两个不同的族中。但是拥有较少的家庭是明智的,所以你应该只选择一个家庭

hbase(main):004:0> create 'demo', 'cf'
现在,此表中需要两列:

hbase(main):006:0> put 'demo', 'row1', 'cf:fld1', 'value1'

hbase(main):006:0> put 'demo', 'row1', 'cf:fld2', 'value2'
查看如何在Put时动态指定列。另外,请注意,族只是
cf
,而不是
cf:fld1
cf:fld2
。冒号字符(:)根据列名分隔列族,它们一起称为
列限定符


HTH

不客气。最好的在线资源是官方网站:hbase.apache.org…为什么要使用旧的API?新的更干净更好。我能知道为什么要投否决票吗?相信我,我一点也不在乎我的名声,但我应该得到一个解释。不客气。最好的在线资源是官方网站:hbase.apache.org…为什么要使用旧的API?新的更干净更好。我能知道为什么要投否决票吗?相信我,我一点也不在乎我的名声,但我应该得到一个解释。