org.apache.hadoop.hbase.io.ImmutableBytesWritable#set ( )源码实例Demo

下面列出了org.apache.hadoop.hbase.io.ImmutableBytesWritable#set ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: phoenix   文件: WeekFunction.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    Expression expression = getChildExpression();
    if (!expression.evaluate(tuple, ptr)) {
        return false;
    }
    if ( ptr.getLength() == 0) {
        return true; //means null
    }
    long dateTime = inputCodec.decodeLong(ptr, expression.getSortOrder());
    DateTime dt = new DateTime(dateTime);
    int week = dt.getWeekOfWeekyear();
    PDataType returnType = getDataType();
    byte[] byteValue = new byte[returnType.getByteSize()];
    returnType.getCodec().encodeInt(week, byteValue, 0);
    ptr.set(byteValue);
    return true;
}
 
源代码2 项目: phoenix   文件: LTrimFunction.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    // Starting from the front of the byte, look for all single bytes at the end of the string
    // that is below SPACE_UTF8 (space and control characters) or 0x7f (control chars).
    if (!getStringExpression().evaluate(tuple, ptr)) {
        return false;
    }
    
    if (ptr.getLength() == 0) {
        ptr.set(ByteUtil.EMPTY_BYTE_ARRAY);
        return true;
    }
    byte[] string = ptr.get();
    int offset = ptr.getOffset();
    int length = ptr.getLength();
    
    SortOrder sortOrder = getStringExpression().getSortOrder();
    int i = StringUtil.getFirstNonBlankCharIdxFromStart(string, offset, length, sortOrder);
    if (i == offset + length) {
        ptr.set(ByteUtil.EMPTY_BYTE_ARRAY);
        return true;
    }
    
    ptr.set(string, i, offset + length - i);
    return true;
}
 
源代码3 项目: phoenix   文件: LengthFunction.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    Expression child = getStringExpression();
    if (!child.evaluate(tuple, ptr)) {
        return false;
    }
    if (ptr.getLength() == 0) {
        ptr.set(ByteUtil.EMPTY_BYTE_ARRAY);
        return true;
    }
    int len;
    if (child.getDataType() == PChar.INSTANCE) {
        // Only single-byte characters allowed in CHAR
        len = ptr.getLength();
    } else {
        try {
            len = StringUtil.calculateUTF8Length(ptr.get(), ptr.getOffset(), ptr.getLength(), child.getSortOrder());
        } catch (UndecodableByteException e) {
            return false;
        }
    }
    ptr.set(PInteger.INSTANCE.toBytes(len));
    return true;
}
 
源代码4 项目: Kylin   文件: LZFTest.java
@Test
public void test() throws IOException {

    byte[] raw = new byte[] { 1, 2, 3, 3, 2, 23 };
    byte[] data = LZFEncoder.encode(raw);

    byte[] data2 = new byte[data.length * 2];
    java.lang.System.arraycopy(data, 0, data2, 0, data.length);
    ImmutableBytesWritable bytes = new ImmutableBytesWritable();
    bytes.set(data2, 0, data.length);

    try {
        byte[] uncompressed = LZFDecoder.decode(bytes.get(), bytes.getOffset(), bytes.getLength());
    } catch (IOException e) {
        throw new RuntimeException("LZF decode failure", e);
    }
}
 
源代码5 项目: phoenix   文件: AvgAggregateFunction.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    if (!countFunc.evaluate(tuple, ptr)) {
        return false;
    }
    long count = countFunc.getDataType().getCodec().decodeLong(ptr, SortOrder.getDefault());
    if (count == 0) {
        return false;
    }
    
    // Normal case where a column reference was used as the argument to AVG
    if (!countFunc.isConstantExpression()) {
        sumFunc.evaluate(tuple, ptr);
        BigDecimal sum = (BigDecimal) PDecimal.INSTANCE.toObject(ptr, sumFunc.getDataType());
        // For the final column projection, we divide the sum by the count, both coerced to BigDecimal.
        // TODO: base the precision on column metadata instead of constant
        BigDecimal avg = sum.divide(BigDecimal.valueOf(count), PDataType.DEFAULT_MATH_CONTEXT);
        avg = avg.setScale(scale, BigDecimal.ROUND_DOWN);
        ptr.set(PDecimal.INSTANCE.toBytes(avg));
        return true;
    }
    BigDecimal value = (BigDecimal) ((LiteralExpression)countFunc.getChildren().get(0)).getValue();
    value = value.setScale(scale, BigDecimal.ROUND_DOWN);
    ptr.set(PDecimal.INSTANCE.toBytes(value));
    return true;
}
 
源代码6 项目: phoenix   文件: ProjectionCompiler.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    if (!tuple.getValue(QueryConstants.ARRAY_VALUE_COLUMN_FAMILY, QueryConstants.ARRAY_VALUE_COLUMN_QUALIFIER,
            ptr)) { 
      return false;
    }
    int maxOffset = ptr.getOffset() + ptr.getLength();
    arrayIndexesBitSet.or(ptr);
    arrayIndexesSchema.iterator(ptr, position, arrayIndexesBitSet);
    Boolean hasValue = arrayIndexesSchema.next(ptr, position, maxOffset, arrayIndexesBitSet);
    arrayIndexesBitSet.clear();
    if (hasValue == null) {
        ptr.set(ByteUtil.EMPTY_BYTE_ARRAY);
    }
    return true;
}
 
源代码7 项目: phoenix   文件: MinAggregator.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    if (isNull()) {
        return false;
    }
    ptr.set(value.get(), value.getOffset(), value.getLength());
    return true;
}
 
源代码8 项目: phoenix   文件: RandomFunction.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    if (current == null) {
        current = random.nextDouble();
    }
    ptr.set(PDouble.INSTANCE.toBytes(current));
    return true;
}
 
源代码9 项目: phoenix   文件: PercentRankClientAggregator.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    if (cachedResult == null) {
        ColumnExpression columnExp = (ColumnExpression)exps.get(0);
        // Second exp will be a LiteralExpression of Boolean type indicating whether the ordering to
        // be ASC/DESC
        LiteralExpression isAscendingExpression = (LiteralExpression)exps.get(1);
        boolean isAscending = (Boolean)isAscendingExpression.getValue();

        // Third expression will be LiteralExpression
        LiteralExpression valueExp = (LiteralExpression)exps.get(2);
        Map<Object, Integer> sorted = getSortedValueVsCount(isAscending, columnExp.getDataType());
        long distinctCountsSum = 0;
        Object value = valueExp.getValue();
        for (Entry<Object, Integer> entry : sorted.entrySet()) {
            Object colValue = entry.getKey();
            int compareResult = columnExp.getDataType().compareTo(colValue, value, valueExp.getDataType());
            boolean done = isAscending ? compareResult > 0 : compareResult <= 0;
            if (done) break;
            distinctCountsSum += entry.getValue();
        }

        float result = (float)distinctCountsSum / totalCount;
        this.cachedResult = new BigDecimal(result);
    }
    if (buffer == null) {
        initBuffer();
    }
    buffer = PDataType.DECIMAL.toBytes(this.cachedResult);
    ptr.set(buffer);
    return true;
}
 
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {	
	try {
		valueByteArray.set(hll.getBytes(), 0, hll.getBytes().length);
		ptr.set(ByteUtil.copyKeyBytesIfNecessary(valueByteArray));
	} catch (IOException e) {
		throw new RuntimeException(e);
	}
	return true;
}
 
源代码11 项目: phoenix   文件: NumberSumAggregator.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    if (buffer == null) {
        if (isNullable()) {
            return false;
        }
        initBuffer();
    }
    ptr.set(buffer);
    getDataType().getCodec().encodeLong(sum, ptr);
    return true;
}
 
源代码12 项目: phoenix   文件: RowKeyColumnExpression.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    tuple.getKey(ptr);
    int offset = accessor.getOffset(ptr.get(), ptr.getOffset() + this.offset);
    // Null is represented in the last expression of a multi-part key 
    // by the bytes not being present.
    int maxOffset = ptr.getOffset() + ptr.getLength();
    if (offset < maxOffset) {
        byte[] buffer = ptr.get();
        int byteSize = -1;
        // FIXME: fixedByteSize <= maxByteSize ? fixedByteSize : 0 required because HBase passes bogus keys to filter to position scan (HBASE-6562)
        if (fromType.isFixedWidth()) {
            Integer maxLength = getMaxLength();
            byteSize = fromType.getByteSize() == null ? maxLength : fromType.getByteSize();
            byteSize = byteSize <= maxOffset ? byteSize : 0;
        }
        int length = byteSize >= 0 ? byteSize  : accessor.getLength(buffer, offset, maxOffset);
        // In the middle of the key, an empty variable length byte array represents null
        if (length > 0) {
            ptr.set(buffer,offset,length);
            type.coerceBytes(ptr, fromType, getSortOrder(), getSortOrder());
        } else {
            ptr.set(ByteUtil.EMPTY_BYTE_ARRAY);
        }
    } else {
        ptr.set(ByteUtil.EMPTY_BYTE_ARRAY);
    }
    // Always return true because we're always able to evaluate a row key column
    return true;
}
 
源代码13 项目: phoenix   文件: InvertFunction.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    if (!getChildExpression().evaluate(tuple, ptr)) { return false; }
    if (ptr.getLength() == 0) { return true; }
    byte[] buf = new byte[ptr.getLength()];
    ColumnModifier.SORT_DESC.apply(ptr.get(), ptr.getOffset(), buf, 0, ptr.getLength());
    ptr.set(buf);
    return true;
}
 
源代码14 项目: phoenix   文件: SequenceValueExpression.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
		byte[] valueBuffer = new byte[PLong.INSTANCE.getByteSize()];
    PLong.INSTANCE.getCodec().encodeLong(tuple.getSequenceValue(index), valueBuffer, 0);
    ptr.set(valueBuffer);
    return true;
}
 
源代码15 项目: phoenix   文件: LowerFunction.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    if (!getStrExpression().evaluate(tuple, ptr)) {
        return false;
    }

    String sourceStr = (String) PVarchar.INSTANCE.toObject(ptr, getStrExpression().getSortOrder());

    if (sourceStr == null) {
        return true;
    }

    ptr.set(PVarchar.INSTANCE.toBytes(sourceStr.toLowerCase()));
    return true;
}
 
源代码16 项目: phoenix   文件: PositionBasedMultiKeyValueTuple.java
@Override
public void getKey(ImmutableBytesWritable ptr) {
    Cell value = values.getFirstCell();
    ptr.set(value.getRowArray(), value.getRowOffset(), value.getRowLength());
}
 
源代码17 项目: phoenix   文件: ResultUtil.java
@SuppressWarnings("deprecation")
public static void getKey(KeyValue value, ImmutableBytesWritable key) {
    key.set(value.getBuffer(), value.getRowOffset(), value.getRowLength());
}
 
源代码18 项目: phoenix   文件: MultiKeyValueComparisonFilter.java
@Override
public void getKey(ImmutableBytesWritable ptr) {
    ptr.set(keyPtr.get(),keyPtr.getOffset(),keyPtr.getLength());
}
 
源代码19 项目: phoenix   文件: UnnestArrayPlan.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
    ptr.set(arrayPtr.get(), arrayPtr.getOffset(), arrayPtr.getLength());
    PArrayDataTypeDecoder.positionAtArrayElement(ptr, index++, getDataType(), getMaxLength());
    return true;
}
 
源代码20 项目: phoenix   文件: PercentileDiscClientAggregator.java
@Override
public boolean evaluate(Tuple tuple, ImmutableBytesWritable ptr) {
	// Reset buffer so that it gets initialized with the current datatype of the column
	buffer = null;
	if (cachedResult == null) {
		columnExp = (ColumnExpression)exps.get(0);
		// Second exp will be a LiteralExpression of Boolean type indicating
		// whether the ordering to be ASC/DESC
		LiteralExpression isAscendingExpression = (LiteralExpression) exps
				.get(1);
		boolean isAscending = (Boolean) isAscendingExpression.getValue();

		// Third expression will be LiteralExpression
		LiteralExpression percentileExp = (LiteralExpression) exps.get(2);
		float p = ((Number) percentileExp.getValue()).floatValue();
		Map<Object, Integer> sorted = getSortedValueVsCount(isAscending, columnExp.getDataType());
		int currValue = 0;
		Object result = null;
		// Here the Percentile_disc returns the cum_dist() that is greater or equal to the
		// Percentile (p) specified in the query.  So the result set will be of that of the
		// datatype of the column being selected
		for (Entry<Object, Integer> entry : sorted.entrySet()) {
			result = entry.getKey();
			Integer value = entry.getValue();
			currValue += value;
			float cum_dist = (float) currValue / (float) totalCount;
			if (cum_dist >= p) {
				break;
			}
		}
		this.cachedResult = result;
	}
	if (buffer == null) {
		// Initialize based on the datatype
		// columnExp cannot be null
		buffer = new byte[columnExp.getDataType().getByteSize()];
	}
	// Copy the result to the buffer.
	System.arraycopy(columnExp.getDataType().toBytes(this.cachedResult), 0, buffer, 0, buffer.length);
	ptr.set(buffer);
	return true;
}