@Override
  public Object evaluate(DeferredObject[] arguments) throws HiveException {
    // Return if either of the arguments is null
    if (arguments[0].get() == null || arguments[1].get() == null) {
      return null;
    }

    if (!initializedBloomFilter) {
      // Setup the bloom filter once
      InputStream in = null;
      try {
        BytesWritable bw = (BytesWritable) arguments[1].get();
        byte[] bytes = new byte[bw.getLength()];
        System.arraycopy(bw.getBytes(), 0, bytes, 0, bw.getLength());
        in = new NonSyncByteArrayInputStream(bytes);
        bloomFilter = BloomKFilter.deserialize(in);
      } catch ( IOException e) {
        throw new HiveException(e);
      } finally {
        IOUtils.closeStream(in);
      }
      initializedBloomFilter = true;
    }

    // Check if the value is in bloom filter
    switch (((PrimitiveObjectInspector)valObjectInspector).
            getTypeInfo().getPrimitiveCategory()) {
      case BOOLEAN:
        boolean vBoolean = ((BooleanObjectInspector)valObjectInspector).
                get(arguments[0].get());
        return bloomFilter.testLong(vBoolean ? 1 : 0);
      case BYTE:
        byte vByte = ((ByteObjectInspector) valObjectInspector).
                get(arguments[0].get());
        return bloomFilter.testLong(vByte);
      case SHORT:
        short vShort = ((ShortObjectInspector) valObjectInspector).
                get(arguments[0].get());
        return bloomFilter.testLong(vShort);
      case INT:
        int vInt = ((IntObjectInspector) valObjectInspector).
                get(arguments[0].get());
        return bloomFilter.testLong(vInt);
      case LONG:
        long vLong = ((LongObjectInspector) valObjectInspector).
                get(arguments[0].get());
        return bloomFilter.testLong(vLong);
      case FLOAT:
        float vFloat = ((FloatObjectInspector) valObjectInspector).
                get(arguments[0].get());
        return  bloomFilter.testDouble(vFloat);
      case DOUBLE:
        double vDouble = ((DoubleObjectInspector) valObjectInspector).
                get(arguments[0].get());
        return bloomFilter.testDouble(vDouble);
      case DECIMAL:
        HiveDecimalWritable vDecimal = ((HiveDecimalObjectInspector) valObjectInspector).
            getPrimitiveWritableObject(arguments[0].get());
        int startIdx = vDecimal.toBytes(scratchBuffer);
        return bloomFilter.testBytes(scratchBuffer, startIdx, scratchBuffer.length - startIdx);
      case DATE:
        DateWritableV2 vDate = ((DateObjectInspector) valObjectInspector).
                getPrimitiveWritableObject(arguments[0].get());
        return bloomFilter.testLong(vDate.getDays());
      case TIMESTAMP:
        Timestamp vTimeStamp = ((TimestampObjectInspector) valObjectInspector).
                getPrimitiveJavaObject(arguments[0].get());
        return bloomFilter.testLong(vTimeStamp.toEpochMilli());
      case CHAR:
        Text vChar = ((HiveCharObjectInspector) valObjectInspector).
                getPrimitiveWritableObject(arguments[0].get()).getStrippedValue();
        return bloomFilter.testBytes(vChar.getBytes(), 0, vChar.getLength());
      case VARCHAR:
        Text vVarchar = ((HiveVarcharObjectInspector) valObjectInspector).
                getPrimitiveWritableObject(arguments[0].get()).getTextValue();
        return bloomFilter.testBytes(vVarchar.getBytes(), 0, vVarchar.getLength());
      case STRING:
        Text vString = ((StringObjectInspector) valObjectInspector).
                getPrimitiveWritableObject(arguments[0].get());
        return bloomFilter.testBytes(vString.getBytes(), 0, vString.getLength());
      case BINARY:
        BytesWritable vBytes = ((BinaryObjectInspector) valObjectInspector).
                getPrimitiveWritableObject(arguments[0].get());
        return bloomFilter.testBytes(vBytes.getBytes(), 0, vBytes.getLength());
      default:
        throw new UDFArgumentTypeException(0, "Bad primitive category " +
                ((PrimitiveTypeInfo) valObjectInspector).getPrimitiveCategory());
    }
  }
GenericUDF to lookup a value in BloomFilter
ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInBloomFilter.java