diff --git pom.xml pom.xml
index 0e30078..1ee7977 100644
--- pom.xml
+++ pom.xml
@@ -126,7 +126,7 @@
4.2.5
4.2.5
1.9.2
- 0.3.2
+ 0.9.2
5.5.1
3.0.1
7.6.0.v20120127
diff --git ql/src/java/org/apache/hadoop/hive/ql/index/bitmap/BitmapObjectInput.java ql/src/java/org/apache/hadoop/hive/ql/index/bitmap/BitmapObjectInput.java
index 75f66a4..1824b3a 100644
--- ql/src/java/org/apache/hadoop/hive/ql/index/bitmap/BitmapObjectInput.java
+++ ql/src/java/org/apache/hadoop/hive/ql/index/bitmap/BitmapObjectInput.java
@@ -20,35 +20,20 @@
import java.io.IOException;
import java.io.ObjectInput;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.lazy.LazyLong;
/**
* An ObjectInput that allows for conversion from an List of LongWritable
* to an EWAH-compressed bitmap.
*/
public class BitmapObjectInput implements ObjectInput {
- Iterator bufferIter;
- List buffer;
+
+ private int index;
+ private long[] values;
- public BitmapObjectInput() {
- buffer = new ArrayList();
- bufferIter = buffer.iterator();
- }
-
- public BitmapObjectInput(List l) {
- readFromList(l);
- }
-
- public void readFromList(List l) {
- buffer = l;
- bufferIter = buffer.iterator();
+ public BitmapObjectInput reset(long[] values) {
+ this.index = 0;
+ this.values = values;
+ return this;
}
@Override
@@ -124,15 +109,10 @@ public void readFully(byte[] arg0, int arg1, int arg2) throws IOException {
@Override
public int readInt() throws IOException {
- if (bufferIter.hasNext()) {
- LongObjectInspector loi = PrimitiveObjectInspectorFactory.writableLongObjectInspector;
- Long l = PrimitiveObjectInspectorUtils.getLong(bufferIter.next(), loi);
- return l.intValue();
- //return bufferIter.next().intValue();
- }
- else {
- throw new IOException();
+ if (index < values.length) {
+ return (int)values[index++];
}
+ throw new IOException();
}
@Override
@@ -142,15 +122,10 @@ public String readLine() throws IOException {
@Override
public long readLong() throws IOException {
- //LongObjectInspector loi = PrimitiveObjectInspectorFactory.writableLongObjectInspector;
- if (bufferIter.hasNext()) {
- LongObjectInspector loi = PrimitiveObjectInspectorFactory.writableLongObjectInspector;
- return PrimitiveObjectInspectorUtils.getLong(bufferIter.next(), loi);
- //return bufferIter.next();
- }
- else {
- throw new IOException();
+ if (index < values.length) {
+ return values[index++];
}
+ throw new IOException();
}
@Override
diff --git ql/src/java/org/apache/hadoop/hive/ql/index/bitmap/BitmapObjectOutput.java ql/src/java/org/apache/hadoop/hive/ql/index/bitmap/BitmapObjectOutput.java
index 7a4b9d8..f776c2c 100644
--- ql/src/java/org/apache/hadoop/hive/ql/index/bitmap/BitmapObjectOutput.java
+++ ql/src/java/org/apache/hadoop/hive/ql/index/bitmap/BitmapObjectOutput.java
@@ -22,19 +22,16 @@
import java.io.ObjectOutput;
import java.util.ArrayList;
import java.util.List;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
/**
* An ObjectOutput that allows conversion from an EWAH-compressed bitmap
* to an List of LongWritable.
*/
public class BitmapObjectOutput implements ObjectOutput {
- ArrayList buffer = new ArrayList();
+
+ List buffer = new ArrayList();
- public List list() {
+ public List list() {
return buffer;
}
@@ -105,12 +102,12 @@ public void writeFloat(float v) throws IOException {
@Override
public void writeInt(int v) throws IOException {
- buffer.add(new LongWritable(v));
+ buffer.add((long)v);
}
@Override
public void writeLong(long v) throws IOException {
- buffer.add(new LongWritable(v));
+ buffer.add(v);
}
@Override
@@ -123,4 +120,7 @@ public void writeUTF(String s) throws IOException {
throw new UnsupportedOperationException();
}
+ public void clear() {
+ buffer.clear();
+ }
}
diff --git ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java
index 58ea3ba..251cc4e 100644
--- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java
+++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java
@@ -18,36 +18,37 @@
package org.apache.hadoop.hive.ql.udf.generic;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+import org.apache.hadoop.hive.ql.index.bitmap.BitmapObjectInput;
+import org.apache.hadoop.hive.ql.index.bitmap.BitmapObjectOutput;
+import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
-import javaewah.EWAHCompressedBitmap;
+import com.googlecode.javaewah.EWAHCompressedBitmap;
import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.index.bitmap.BitmapObjectInput;
-import org.apache.hadoop.hive.ql.index.bitmap.BitmapObjectOutput;
import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.LongWritable;
/**
* An abstract class for a UDF that performs a binary operation between two EWAH-compressed bitmaps.
* For example: Bitmap OR and AND operations between two EWAH-compressed bitmaps.
*/
abstract public class AbstractGenericUDFEWAHBitmapBop extends GenericUDF {
- protected final ArrayList