/** * Copied from HeapListState.getSerializedValue(Object, Object). */ private byte[] serializeInitValue(List<Long> toSerialize) throws IOException { TypeSerializer<Long> serializer = listStateDesc.getElementSerializer(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputViewStreamWrapper view = new DataOutputViewStreamWrapper(baos); // write the same as RocksDB writes lists, with one ',' separator for (int i = 0; i < toSerialize.size(); i++) { serializer.serialize(toSerialize.get(i), view); if (i < toSerialize.size() - 1) { view.writeByte(','); } } view.flush(); return baos.toByteArray(); }
@Override public byte[] getSerializedValue(K key, N namespace) throws Exception { Preconditions.checkState(namespace != null, "No namespace given."); Preconditions.checkState(key != null, "No key given."); ArrayList<V> result = stateTable.get(key, namespace); if (result == null) { return null; } TypeSerializer<V> serializer = stateDesc.getElementSerializer(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputViewStreamWrapper view = new DataOutputViewStreamWrapper(baos); // write the same as RocksDB writes lists, with one ',' separator for (int i = 0; i < result.size(); i++) { serializer.serialize(result.get(i), view); if (i < result.size() -1) { view.writeByte(','); } } view.flush(); return baos.toByteArray(); }
@Override public byte[] getSerializedValue( final byte[] serializedKeyAndNamespace, final TypeSerializer<K> safeKeySerializer, final TypeSerializer<N> safeNamespaceSerializer, final TypeSerializer<List<V>> safeValueSerializer) throws Exception { Preconditions.checkNotNull(serializedKeyAndNamespace); Preconditions.checkNotNull(safeKeySerializer); Preconditions.checkNotNull(safeNamespaceSerializer); Preconditions.checkNotNull(safeValueSerializer); Tuple2<K, N> keyAndNamespace = KvStateSerializer.deserializeKeyAndNamespace( serializedKeyAndNamespace, safeKeySerializer, safeNamespaceSerializer); List<V> result = stateTable.get(keyAndNamespace.f0, keyAndNamespace.f1); if (result == null) { return null; } final TypeSerializer<V> dupSerializer = ((ListSerializer<V>) safeValueSerializer).getElementSerializer(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputViewStreamWrapper view = new DataOutputViewStreamWrapper(baos); // write the same as RocksDB writes lists, with one ',' separator for (int i = 0; i < result.size(); i++) { dupSerializer.serialize(result.get(i), view); if (i < result.size() -1) { view.writeByte(','); } } view.flush(); return baos.toByteArray(); }
@Override public byte[] getSerializedValue( final byte[] serializedKeyAndNamespace, final TypeSerializer<K> safeKeySerializer, final TypeSerializer<N> safeNamespaceSerializer, final TypeSerializer<List<V>> safeValueSerializer) throws Exception { Preconditions.checkNotNull(serializedKeyAndNamespace); Preconditions.checkNotNull(safeKeySerializer); Preconditions.checkNotNull(safeNamespaceSerializer); Preconditions.checkNotNull(safeValueSerializer); Tuple2<K, N> keyAndNamespace = KvStateSerializer.deserializeKeyAndNamespace( serializedKeyAndNamespace, safeKeySerializer, safeNamespaceSerializer); List<V> result = stateTable.get(keyAndNamespace.f0, keyAndNamespace.f1); if (result == null) { return null; } final TypeSerializer<V> dupSerializer = ((ListSerializer<V>) safeValueSerializer).getElementSerializer(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputViewStreamWrapper view = new DataOutputViewStreamWrapper(baos); // write the same as RocksDB writes lists, with one ',' separator for (int i = 0; i < result.size(); i++) { dupSerializer.serialize(result.get(i), view); if (i < result.size() -1) { view.writeByte(','); } } view.flush(); return baos.toByteArray(); }
@Override public byte[] getSerializedValue( final byte[] serializedKeyAndNamespace, final TypeSerializer<K> safeKeySerializer, final TypeSerializer<N> safeNamespaceSerializer, final TypeSerializer<List<V>> safeValueSerializer) throws Exception { Preconditions.checkNotNull(serializedKeyAndNamespace); Preconditions.checkNotNull(safeKeySerializer); Preconditions.checkNotNull(safeNamespaceSerializer); Preconditions.checkNotNull(safeValueSerializer); Tuple2<K, N> keyAndNamespace = KvStateSerializer.deserializeKeyAndNamespace( serializedKeyAndNamespace, safeKeySerializer, safeNamespaceSerializer); List<V> result = stateTable.get(keyAndNamespace.f0, keyAndNamespace.f1); if (result == null) { return null; } final TypeSerializer<V> dupSerializer = ((ListSerializer<V>) safeValueSerializer).getElementSerializer(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputViewStreamWrapper view = new DataOutputViewStreamWrapper(baos); // write the same as RocksDB writes lists, with one ',' separator for (int i = 0; i < result.size(); i++) { dupSerializer.serialize(result.get(i), view); if (i < result.size() -1) { view.writeByte(','); } } view.flush(); return baos.toByteArray(); }
@Override public byte[] getSerializedValue( final byte[] serializedKeyAndNamespace, final TypeSerializer<K> safeKeySerializer, final TypeSerializer<List<E>> safeValueSerializer) throws Exception { K key = KvStateSerializer.deserializeKeyAndNamespace(serializedKeyAndNamespace, safeKeySerializer, VoidNamespaceSerializer.INSTANCE).f0; ByteArrayOutputStreamWithPos baos = new ByteArrayOutputStreamWithPos(); DataOutputViewStreamWrapper view = new DataOutputViewStreamWrapper(baos); if (stateStorage.lazySerde()) { List<E> value = get(key); if (value == null) { return null; } final TypeSerializer<E> dupSerializer = ((ListSerializer<E>) safeValueSerializer).getElementSerializer(); for (int i = 0; i < value.size(); i++) { dupSerializer.serialize(value.get(i), view); if (i < value.size() -1) { view.writeByte(','); } } view.flush(); return baos.toByteArray(); } else { return getSerializedValue(key, baos, view, safeKeySerializer); } }
@Override public byte[] getSerializedValue( final byte[] serializedKeyAndNamespace, final TypeSerializer<K> safeKeySerializer, final TypeSerializer<N> safeNamespaceSerializer, final TypeSerializer<List<E>> safeValueSerializer) throws Exception { Tuple2<K, N> tuple = KvStateSerializer.deserializeKeyAndNamespace(serializedKeyAndNamespace, safeKeySerializer, safeNamespaceSerializer); K key = tuple.f0; N namespace = tuple.f1; ByteArrayOutputStreamWithPos baos = new ByteArrayOutputStreamWithPos(); DataOutputViewStreamWrapper view = new DataOutputViewStreamWrapper(baos); if (stateStorage.lazySerde()) { List<E> value = get(key, namespace); if (value == null) { return null; } final TypeSerializer<E> dupSerializer = ((ListSerializer<E>) safeValueSerializer).getElementSerializer(); for (int i = 0; i < value.size(); i++) { dupSerializer.serialize(value.get(i), view); if (i < value.size() -1) { view.writeByte(','); } } view.flush(); return baos.toByteArray(); } else { return getSerializedValue(key, namespace, baos, view, safeKeySerializer, safeNamespaceSerializer); } }