2013-05-19 97 views
1

我是HBase的新手,从表中逐行检索结果的最佳方法是什么?我想读取表格中的全部数据。我的桌子有两列家庭说col1和col2。从HBase中读取数据

+0

应该有设施,将让你指挥你的数据库来做到这一点。你有什么尝试? –

+0

无论如何,您将逐行检索数据.....有多少行以及哪些列依赖于您的查询。 – Thihara

+0

我已经使用扫描!但是我想把这个扩展为另一个缩小地图的工作。 (我有一个从文件读取并将数据插入到HBase的map reduce作业)。在Map(next)阶段,我想逐行阅读并处理数据。任何示例代码都会有很大的帮助 –

回答

0

从HBase的外壳,你可以在表中使用扫描命令列表数据,或得到检索的记录。参考here

0

我觉得这里就是你需要:既通过HBase的外壳和Java API:http://cook.coredump.me/post/19672191046/hbase-client-example

但是你应该明白HBase的壳“扫描”是很慢的(它没有被缓存)。但它仅用于调试目的。

另一个有用的信息部分是这里:http://hbase.apache.org/book/perf.reading.html 这一章是正确的阅读HBase,但有点难以理解,因为它假设了一定程度的熟悉程度并包含更高级的建议。我从一开始就向你推荐这本指南。

0

我一直在寻找这样的事情!

地图功能

public void map(ImmutableBytesWritable row, Result value, Context context) throws InterruptedException, IOException { 

      String x1 = new String(value.getValue(Bytes.toBytes("ColumnFamily"), Bytes.toBytes("X1"))); 
      String x2 = new String(value.getValue(Bytes.toBytes("ColumnFamily"), Bytes.toBytes("X2"))); 


} 

驱动程序文件:

Configuration config2 = new Configuration(); 
      Job job2 = new Job(config1, "kmeans2"); 
      //Configuration for job2 

      job2.setJarByClass(Converge.class); 
      job2.setMapperClass(Converge.Map.class); 
      job2.setReducerClass(Converge.Reduce.class); 
      job2.setInputFormatClass(TableInputFormat.class); 
      job2.setOutputFormatClass(NullOutputFormat.class); 
      job2.setOutputKeyClass(Text.class); 
      job2.setOutputValueClass(Text.class); 
      job2.getConfiguration().set(TableInputFormat.INPUT_TABLE, "tablename");