done
https://issues.apache.org/jira/browse/PIG-970
Alan 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));