Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase >> mail # user >> TableRecordReaderImpl is not able to get the rows

Copy link to this message
RE: TableRecordReaderImpl is not able to get the rows
Hi Subroto
          Scan.addColumn you can use when u want only specific columns to be retrieved in the sacn . U can read the javadoc in addColumn() and addFamily() methods and then it will be clear.
scan.addColumn(Bytes.toBytes(column), Bytes.toBytes(""))
As you do this empty qualifier name is getting added in the family list which needs to be retrieved.

So if you want to retrieve whole data avoid addColumn and addFamily.
If want want specific CFs to be retrieved go with addFamily
Within a CF u want specific qualifier only then only go for addColumn

From: Subroto [[EMAIL PROTECTED]]
Sent: Thursday, June 14, 2012 1:35 PM
Subject: Re: TableRecordReaderImpl is not able to get the rows

Hi Sonal,

Thanks for your suggestion… I checked my code and found out that I was doing something like this:
for (String column : columns) {
        scan.addColumn(Bytes.toBytes(column), Bytes.toBytes(""))

The same scan object was being set in the configuration. After removing this piece of code, the MR Job worked fine.

One more doubt:
Scan.addColumn takes two argument:
public Scan addColumn(byte[] family,
                      byte[] qualifier)
The first one is the column name in bytes. What should be passed as second argument if I want the qualifier to be ignored(I mean to include any qualifier)???
My HBase table looks like this:
ROW                                                                  COLUMN+CELL
 row1                                                                column=cf:a, timestamp=1339581548508, value=value1
 row2                                                                column=cf:b, timestamp=1339581557585, value=value2
 row3                                                                column=cf:c, timestamp=1339581566227, value=value3

Thanks again for the correct pointers…. :-)

Subroto Sanyal
On Jun 14, 2012, at 9:07 AM, Sonal Goyal wrote:

> Are you doing something specific with the RecordReader? Maybe you can post
> more of your code as it is difficult to tell anything right now.
> Best Regards,
> Sonal
> Crux: Reporting for HBase <https://github.com/sonalgoyal/crux>
> Nube Technologies <http://www.nubetech.co>
> <http://in.linkedin.com/in/sonalgoyal>
> On Wed, Jun 13, 2012 at 7:28 PM, Subroto <[EMAIL PROTECTED]> wrote:
>> Hi Sonal,
>> The Scan is being created by:
>> void
>> org.apache.hadoop.hbase.mapreduce.TableInputFormat.setConf(Configuration
>> configuration)
>> I am not providing any other scan options…. :-(
>> Cheers,
>> Subroto Sanyal
>> On Jun 13, 2012, at 1:30 PM, Sonal Goyal wrote:
>>> Hi Subroto,
>>> How are you configuring your job? Are you providing any Scan options?
>> Check
>>> Chapter 7 of the ref guide at
>>> http://hbase.apache.org/book/mapreduce.example.html
>>> Best Regards,
>>> Sonal
>>> Crux: Reporting for HBase <https://github.com/sonalgoyal/crux>
>>> Nube Technologies <http://www.nubetech.co>
>>> <http://in.linkedin.com/in/sonalgoyal>
>>> On Wed, Jun 13, 2012 at 4:47 PM, Subroto <[EMAIL PROTECTED]> wrote:
>>>> Hi,
>>>> I have a table with details:
>>>> hbase(main):024:0> scan 'test'
>>>> ROW
>>>> row1
>>>> column=cf:a, timestamp=1339581548508, value=value1
>>>> row2
>>>> column=cf:b, timestamp=1339581557585, value=value2
>>>> row3
>>>> column=cf:c, timestamp=1339581566227, value=value3
>>>> 3 row(s) in 0.0200 seconds
>>>> When my MR job tries to access TableRecordReader
>>>> org.apache.hadoop.hbase.client.HTable.ClientScanner.nextScanner set the
>>>> "value" to null for every call which gives a sense to my MR application
>>>> that there are no records in the table.
>>>> I am using: 0.92.1 HBase and 0.23.1 Hadoop…..
>>>> What can be the possible reason(s) behind it??
>>>> Cheers,
>>>> Subroto Sanyal