Pig UDF Example
Background
This little UDF will convert the first 8 bytes of an HBase key into a long. The Key that we had was a composite key made up of two 8 Byte longs and we needed to convert the first 8 bytes and then the second 8 bytes to get them separately. So here is how we did it.
I have also left in the imports and you will need to find the jar files that contain these classes.
I have also left in the imports and you will need to find the jar files that contain these classes.
Implementation
package allan.myudf; import java.io.IOException; import org.apache.hadoop.hbase.util.Bytes; import org.apache.pig.EvalFunc; import org.apache.pig.backend.hadoop.hbase.HBaseBinaryConverter; import org.apache.pig.data.DataByteArray; import org.apache.pig.data.Tuple; public class ConvertFirst extends EvalFunc<Long> { public Long exec(Tuple input) throws IOException { if (input != null && input.size() == 1) { try { DataByteArray a = (DataByteArray) input.get(0); HBaseBinaryConverter b = new HBaseBinaryConverter(); return Bytes.toLong(b.toBytes(a),0,8);} catch (IllegalArgumentException e) { System.err.println("..."); } } return null; } }
No comments:
Post a Comment