com.nextbreakpoint.flink.dummies.SampledTemperatureSplitSerializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.nextbreakpoint.flink.dummies Show documentation
Show all versions of com.nextbreakpoint.flink.dummies Show documentation
Collection of dummy jobs for Apache Flink
The newest version!
/*
* This file is part of Flink Dummies
* https://github.com/nextbreakpoint/flink-dummies
*/
package com.nextbreakpoint.flink.dummies;
import org.apache.flink.core.io.SimpleVersionedSerializer;
import org.apache.flink.core.memory.DataInputDeserializer;
import org.apache.flink.core.memory.DataOutputSerializer;
import java.io.IOException;
import java.util.ArrayList;
public class SampledTemperatureSplitSerializer implements SimpleVersionedSerializer {
private static final int CURRENT_VERSION = 1;
@Override
public int getVersion() {
return CURRENT_VERSION;
}
@Override
public byte[] serialize(SampledTemperatureSplit split) throws IOException {
final DataOutputSerializer out = new DataOutputSerializer(8 + 4);
serializeV1(out, split);
return out.getCopyOfBuffer();
}
@Override
public SampledTemperatureSplit deserialize(int version, byte[] bytes) throws IOException {
if (version != CURRENT_VERSION) {
throw new IOException("Unrecognized version: " + version);
}
final DataInputDeserializer in = new DataInputDeserializer(bytes);
return deserializeV1(in);
}
public static void serializeV1(DataOutputSerializer out, SampledTemperatureSplit split) throws IOException {
out.writeUTF(split.splitId());
out.writeInt(split.getMaxCount());
out.writeLong(split.getMaxDelay());
out.writeInt(split.getSensors().size());
for (TemperatureSensor temperature : split.getSensors()) {
out.writeUTF(temperature.getSensorId());
out.writeUTF(temperature.getLocationId());
out.writeInt(temperature.getValue());
}
}
public static SampledTemperatureSplit deserializeV1(DataInputDeserializer in) throws IOException {
final String splitId = in.readUTF();
final int maxCount = in.readInt();
final long maxDelay = in.readLong();
final int num = in.readInt();
final ArrayList temperatures = new ArrayList<>(num);
for (int remaining = num; remaining > 0; remaining--) {
final String sensorId = in.readUTF();
final String locationId = in.readUTF();
final Integer temperature = in.readInt();
final TemperatureSensor sensor = TemperatureSensor.builder()
.withSensorId(sensorId)
.withLocationId(locationId)
.withValue(temperature)
.build();
temperatures.add(sensor);
}
return new SampledTemperatureSplit(splitId, maxCount, maxDelay, temperatures);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy