Search in sources :

Example 1 with StreamingPropertyValueTableDataRef

use of org.vertexium.accumulo.StreamingPropertyValueTableDataRef in project vertexium by visallo.

the class DataInDataTableStreamingPropertyValueStorageStrategy method saveStreamingPropertyValue.

@Override
public StreamingPropertyValueRef saveStreamingPropertyValue(ElementMutationBuilder elementMutationBuilder, String rowKey, Property property, StreamingPropertyValue streamingPropertyValue) {
    try {
        String dataTableRowKey = new DataTableRowKey(rowKey, property).getRowKey();
        InputStream in = streamingPropertyValue.getInputStream();
        byte[] buffer = new byte[dataInDataTablePartSize];
        long offset = 0;
        while (true) {
            int read = in.read(buffer);
            if (read <= 0) {
                break;
            }
            Mutation dataMutation = new Mutation(dataTableRowKey);
            Text columnQualifier = new Text(String.format("%08x", offset));
            dataMutation.put(DATA_COLUMN_FAMILY, columnQualifier, property.getTimestamp(), new Value(buffer, 0, read));
            elementMutationBuilder.saveDataMutation(dataMutation);
            offset += read;
        }
        Mutation dataMutation = new Mutation(dataTableRowKey);
        dataMutation.put(METADATA_COLUMN_FAMILY, METADATA_LENGTH_COLUMN_QUALIFIER, property.getTimestamp(), new Value(Longs.toByteArray(offset)));
        elementMutationBuilder.saveDataMutation(dataMutation);
        return new StreamingPropertyValueTableDataRef(dataTableRowKey, streamingPropertyValue, offset);
    } catch (Exception ex) {
        throw new VertexiumException("Could not store streaming property value", ex);
    }
}
Also used : InputStream(java.io.InputStream) Value(org.apache.accumulo.core.data.Value) StreamingPropertyValue(org.vertexium.property.StreamingPropertyValue) Text(org.apache.hadoop.io.Text) Mutation(org.apache.accumulo.core.data.Mutation) StreamingPropertyValueTableDataRef(org.vertexium.accumulo.StreamingPropertyValueTableDataRef) VertexiumException(org.vertexium.VertexiumException) VertexiumException(org.vertexium.VertexiumException) DataTableRowKey(org.vertexium.accumulo.keys.DataTableRowKey)

Aggregations

InputStream (java.io.InputStream)1 Mutation (org.apache.accumulo.core.data.Mutation)1 Value (org.apache.accumulo.core.data.Value)1 Text (org.apache.hadoop.io.Text)1 VertexiumException (org.vertexium.VertexiumException)1 StreamingPropertyValueTableDataRef (org.vertexium.accumulo.StreamingPropertyValueTableDataRef)1 DataTableRowKey (org.vertexium.accumulo.keys.DataTableRowKey)1 StreamingPropertyValue (org.vertexium.property.StreamingPropertyValue)1