done
https://issues.apache.org/jira/browse/PIG-970Alan Gates a �crit :
> Would it be possible to attach this to the JIRA so we can commit it to
> the code? We'd be happy to get it integrated with Pig 0.5, which will
> run on Hadoop 0.20.
>
> Alan.
>
> On Sep 18, 2009, at 6:33 AM, Vincent BARAT wrote:
>
>> Hello,
>>
>> For those who need this, I have attached to this email a small PIG
>> patch to support HBase 0.20.0.
>>
>> It can be applied on the trunk as of today.
>>
>> It is a minimal patch that only modifies the source code. You still
>> need to import the HBase 0.20.0 .jar by yourselves.
>>
>> If nobody works on this, I also plan to add the storage of PIG results
>> in HBase tables, but I don't know when.
>>
>> Index: src/org/apache/pig/backend/hadoop/hbase/HBaseSlice.java
>> ==================================================================>> --- src/org/apache/pig/backend/hadoop/hbase/HBaseSlice.java
>> (revision 816619)
>> +++ src/org/apache/pig/backend/hadoop/hbase/HBaseSlice.java
>> (working copy)
>> @@ -24,9 +24,9 @@
>> import org.apache.hadoop.hbase.HBaseConfiguration;
>> import org.apache.hadoop.hbase.UnknownScannerException;
>> import org.apache.hadoop.hbase.client.HTable;
>> -import org.apache.hadoop.hbase.client.Scanner;
>> -import org.apache.hadoop.hbase.io.Cell;
>> -import org.apache.hadoop.hbase.io.RowResult;
>> +import org.apache.hadoop.hbase.client.Result;
>> +import org.apache.hadoop.hbase.client.ResultScanner;
>> +import org.apache.hadoop.hbase.client.Scan;
>> import org.apache.hadoop.hbase.util.Bytes;
>> import org.apache.hadoop.util.StringUtils;
>> import org.apache.pig.Slice;
>> @@ -61,7 +61,7 @@
>> /** The connection to the table in Hbase **/
>> private transient HTable m_table;
>> /** The scanner over the table **/
>> - private transient Scanner m_scanner;
>> + private transient ResultScanner m_scanner;
>>
>> private transient ArrayList<Object> mProtoTuple;
>>
>> @@ -178,17 +178,18 @@
>> * @throws IOException
>> */
>> private void restart(byte[] startRow) throws IOException {
>> + Scan scan;
>> if ((m_endRow != null) && (m_endRow.length > 0)) {
>> - this.m_scanner = this.m_table.getScanner(m_inputColumns,
>> startRow,
>> - m_endRow);
>> + scan = new Scan(startRow, m_endRow);
>> } else {
>> - this.m_scanner = this.m_table.getScanner(m_inputColumns,
>> startRow);
>> + scan = new Scan(startRow);
>> }
>> + this.m_scanner = this.m_table.getScanner(scan);
>> }
>>
>> @Override
>> public boolean next(Tuple value) throws IOException {
>> - RowResult result;
>> + Result result;
>> try {
>> result = this.m_scanner.next();
>> } catch (UnknownScannerException e) {
>> @@ -215,15 +216,14 @@
>> * @param tuple
>> * tuple
>> */
>> - private void convertResultToTuple(RowResult result, Tuple tuple) {
>> + private void convertResultToTuple(Result result, Tuple tuple) {
>> if (mProtoTuple == null)
>> mProtoTuple = new ArrayList<Object>();
>>
>> - Cell cell = null;
>> byte[] value = null;
>> for (byte[] column : m_inputColumns) {
>> - cell = result.get(column);
>> - if (cell == null || (value = cell.getValue()) == null) {
>> + value = result.getValue(column);
>> + if (value == null) {
>> mProtoTuple.add(null);
>> } else {
>> mProtoTuple.add(new DataByteArray(value));
>
>
>