下面列出了org.apache.hadoop.io.ArrayPrimitiveWritable#com.esotericsoftware.kryo.io.Output 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void serialize(T object, Output output)
{
Class type = object.getClass();
Serde serde = null;
if (clazz == type) {
serde = getDefaultSerde(type);
}
if (serde != null) {
serde.serialize(object, output);
return;
}
//delegate to kryo
if (clazz == null) {
kryo.writeClassAndObject(output, object);
} else {
kryo.writeObject(output, object);
}
}
@Override
protected void writeObject(Kryo kryo, Output output, Feature feature) throws Exception {
output.writeString(feature.getName());
output.writeLong(feature.getDuration());
kryo.writeObject(output, feature.getSparseDescriptors());
float[][][] m = feature.getDenseDescriptors();
output.writeInt(m.length); // write x
if(m.length == 0) return;
output.writeInt(m[0].length); // write y
output.writeInt(m[0][0].length); // write z
for(int x=0; x<m.length; x++){
for(int y=0; y<m[0].length; y++){
for(int z=0; z<m[0][0].length; z++){
output.writeFloat(m[x][y][z]);
}
}
}
}
public Kryo5Codec(ClassLoader classLoader) {
this.kryoPool = new Pool<Kryo>(true, false, 1024) {
@Override
protected Kryo create() {
return createKryo(classLoader);
}
};
this.inputPool = new Pool<Input>(true, false, 512) {
@Override
protected Input create() {
return new Input(8192);
}
};
this.outputPool = new Pool<Output>(true, false, 512) {
@Override
protected Output create() {
return new Output(8192, -1);
}
};
}
public void write(Kryo kryo, Output output, ArrayMetaData<float[]> object) {
try {
float[] arrData = arrayMetaData.getArrData();
arrayMetaData.send(output);
int arrSegNum = arrayMetaData.getSegNum();
for (int i = 0; i < arrSegNum; i++) {
int from = arrayMetaData.getFrom(i);
int to = arrayMetaData.getTo(i);
for (int j = from; j < to; j++) {
output.writeFloat(arrData[j]);
}
}
} catch (IOException e) {
LOG.error("double array write exception", e);
System.exit(1);
}
}
private void serialize(String filename, Object obj) {
synchronized (kryoLock) {
File file = fileCache.create(filename);
Output output = null;
try {
output = createOutput(new FileOutputStream(file));
kryo.writeObject(output, obj);
} catch (Exception e) {
Logger.e(TAG, e);
} catch (OutOfMemoryError oom) {
MainApplication.freeMemory();
Logger.e(TAG, oom);
} finally {
IOUtils.closeQuietly(output);
}
fileCache.put(file);
}
}
/**
* Serialize an object.
* Only supports BIN and BIN_GZ SerializationMode.
*
* @param outputStream
* @param o
* @throws IOException
*/
public static void serialize(OutputStream outStream, Object o, SerializationMode mode) {
try {
if (mode == SerializationMode.BIN || mode == SerializationMode.BIN_GZ) {
Kryo kryo = new Kryo();
kryo.setReferences(false);
Output output = mode == SerializationMode.BIN_GZ ? new Output(new GZIPOutputStream(
outStream)) : new Output(outStream);
kryo.writeObject(output, o);
output.close();
} else {
logger.warn("Unsupported serialization mode: {} file: {}", mode);
}
} catch (KryoException | IOException e) {
logger.error("Serialization exception", e);
throw new RuntimeException(e);
}
}
@Test(groups = "sv")
public void testSerializationAndHashCode() {
final AlignmentInterval one = fromSAMRecordString("asm002362:tig00002\t16\tchr2\t1422222\t60\t75M56I139M\t*\t0\t0\tATGCTGGGGAATTTGTGTGCTCCTTGGGTGGGGACGAGCATGGAAGGCGCGTGGGACTGAAGCCTTGAAGACCCCGCAGGCGCCTCTCCTGGACAGACCTCGTGCAGGCGCCTCTCCTGGACCGACCTCGTGCAGGCGCCTCTCCTGGACAGACCTCGTGCAGGCGCCTCTCCTGGACCGACCTCGTGCAGGCGCCGCGCTGGACCGACCTCGTGCAGGCGCCGCGCTGGGCCATGGGGAGAGCGAGAGCCTGGTGTGCCCCTCAGGGAC\t*\tSA:Z:chr2_KI270774v1_alt,105288,-,114M1I27M1I127M,56,13;\tMD:Z:214\tRG:Z:GATKSVContigAlignments\tNM:i:56\tAS:i:142\tXS:i:0\n",
true);
final AlignmentInterval two = fromSAMRecordString("asm002362:tig00002\t2064\tchr2_KI270774v1_alt\t105288\t56\t114M1I27M1I127M\t*\t0\t0\tATGCTGGGGAATTTGTGTGCTCCTTGGGTGGGGACGAGCATGGAAGGCGCGTGGGACTGAAGCCTTGAAGACCCCGCAGGCGCCTCTCCTGGACAGACCTCGTGCAGGCGCCTCTCCTGGACCGACCTCGTGCAGGCGCCTCTCCTGGACAGACCTCGTGCAGGCGCCTCTCCTGGACCGACCTCGTGCAGGCGCCGCGCTGGACCGACCTCGTGCAGGCGCCGCGCTGGGCCATGGGGAGAGCGAGAGCCTGGTGTGCCCCTCAGGGAC\t*\tSA:Z:chr2,1422222,-,75M56I139M,60,56;\tMD:Z:94C17G1G6T13T3G1G34A3T9T68T8\tRG:Z:GATKSVContigAlignments\tNM:i:13\tAS:i:179\tXS:i:142",
true);
final AlignedContig sourceTig = new AlignedContig("asm002362:tig00002", "GTCCCTGAGGGGCACACCAGGCTCTCGCTCTCCCCATGGCCCAGCGCGGCGCCTGCACGAGGTCGGTCCAGCGCGGCGCCTGCACGAGGTCGGTCCAGGAGAGGCGCCTGCACGAGGTCTGTCCAGGAGAGGCGCCTGCACGAGGTCGGTCCAGGAGAGGCGCCTGCACGAGGTCTGTCCAGGAGAGGCGCCTGCGGGGTCTTCAAGGCTTCAGTCCCACGCGCCTTCCATGCTCGTCCCCACCCAAGGAGCACACAAATTCCCCAGCAT".getBytes(),
Arrays.asList(one, two));
final List<AssemblyContigAlignmentsConfigPicker.GoodAndBadMappings> config = AssemblyContigAlignmentsConfigPicker.pickBestConfigurations(sourceTig, new HashSet<>(Collections.singletonList("chr2")), 0.);
final AssemblyContigWithFineTunedAlignments tig = AssemblyContigAlignmentsConfigPicker.reConstructContigFromPickedConfiguration(new Tuple2<>(new Tuple2<>(sourceTig.getContigName(), sourceTig.getContigSequence()),
config)).next();
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
final Output out = new Output(bos);
final Kryo kryo = new Kryo();
kryo.writeClassAndObject(out, tig);
out.flush();
final ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
final Input in = new Input(bis);
@SuppressWarnings("unchecked")
final AssemblyContigWithFineTunedAlignments roundTrip = (AssemblyContigWithFineTunedAlignments) kryo.readClassAndObject(in);
Assert.assertEquals(tig, roundTrip);
Assert.assertEquals(tig.hashCode(), roundTrip.hashCode());
}
@Test
public void testDataFileKryoSerialization() throws Exception {
File data = temp.newFile();
Assert.assertTrue(data.delete());
Kryo kryo = new KryoSerializer(new SparkConf()).newKryo();
try (Output out = new Output(new FileOutputStream(data))) {
kryo.writeClassAndObject(out, DATA_FILE);
kryo.writeClassAndObject(out, DATA_FILE.copy());
}
try (Input in = new Input(new FileInputStream(data))) {
for (int i = 0; i < 2; i += 1) {
Object obj = kryo.readClassAndObject(in);
Assert.assertTrue("Should be a DataFile", obj instanceof DataFile);
checkDataFile(DATA_FILE, (DataFile) obj);
}
}
}
public byte[] serialize(Object object) {
byte[] result;
if (object == null) {
result = new byte[0];
return result;
}
ByteArrayOutputStream stream = new ByteArrayOutputStream();
try {
Output output = new Output(stream);
kryo.writeObject(output, object);
output.close();
} catch (Exception e) {
result = new byte[0];
}
result = stream.toByteArray();
return result;
}
@Override
public void write(Kryo kryo, Output output, EventFields eventFields) {
// Write out the number of entries;
intSerializer.write(kryo, output, size);
for (Entry<String, Set<FieldValue>> entry : map.entrySet()) {
for(FieldValue fieldValue : entry.getValue()) {
// Write the fields in the value
stringSerializer.write(kryo, output, entry.getKey());
valueSerializer.write(kryo, output, fieldValue.getVisibility().getExpression().length > 0 ? fieldValue.getVisibility().flatten() : fieldValue.getVisibility().getExpression());
valueSerializer.write(kryo, output, fieldValue.getValue());
valueSerializer.write(kryo, output, fieldValue.getMetadata());
}
}
output.flush();
}
@Override
public byte[] serialize(Object object) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Output output = new Output(baos);
kryo.writeClassAndObject(output, object);
output.flush();
output.close();
return baos.toByteArray();
}
@Override
public void write(Kryo kryo, Output output, ComputeContentEvent object) {
output.writeLong(object.splitId, true);
output.writeLong(object.learningNodeId, true);
output.writeInt(object.preSplitDist.length, true);
for(int i = 0; i < object.preSplitDist.length; i++){
output.writeDouble(object.preSplitDist[i], PRECISION, true);
}
}
public KryoSerializer() {
kryo = new Kryo();
kryo.setReferences(false);
kryo.setRegistrationRequired(false);
kryoOut = new Output(2000, 2000000000);
kryoIn = new Input(1);
}
@Override
public void save(String saveFileName) throws IOException {
Kryo kryo = CubeUtils.getKryoWithRegistrations();
OutputStream zip = new SnappyOutputStream(new FileOutputStream(saveFileName));
Output output = new Output(zip);
kryo.writeClassAndObject(output, partitions);
// zip.closeEntry();
output.close();
// zip.close();
}
@Override
public void write(Kryo kryo, Output output, NiciraNat object) {
output.writeInt(object.niciraNatFlags());
output.writeInt(object.niciraNatPresentFlags());
output.writeInt(object.niciraNatPortMin());
output.writeInt(object.niciraNatPortMax());
output.writeBytes(object.niciraNatIpAddressMin().toOctets());
output.writeBytes(object.niciraNatIpAddressMax().toOctets());
}
public void savePage(OutputStream out, String title, UrlPageModel pageModel, SerializablePage page) {
synchronized (kryoLock) {
Output output = null;
try {
output = createOutput(out);
output.writeString(title);
kryo.writeObject(output, pageModel);
kryo.writeObject(output, page);
} finally {
IOUtils.closeQuietly(output);
}
}
}
@Override
public Slice toByteArray(T o)
{
final Output output = new Output(32, -1);
try {
kryo.writeClassAndObject(output, o);
} finally {
output.close();
}
return new Slice(output.getBuffer(), 0, output.position());
}
@Override
public <T> byte[] writeObject(T obj) {
Output output = Outputs.getOutput();
Kryo kryo = kryoThreadLocal.get();
try {
kryo.writeObject(output, obj);
return output.toBytes();
} finally {
Outputs.clearOutput(output);
}
}
/**
* 序列化
* @param object 需要序列化的对象
* @return
*/
public static byte[] serialize(Object object) {
Output output = new Output(4096, -1);
new Kryo().writeClassAndObject(output, object);
byte[] bytes = output.toBytes();
output.close();
return bytes;
}
@Override
public void write(Kryo kryo, Output output, Type type) {
output.writeLong(type.getRequestId());
output.writeString(type.getStreamId());
output.writeLong(type.getSequenceNr());
kryo.writeObject(output, type.getMetadata());
try {
this.writeObject(kryo, output, type);
} catch (Exception e) {
//TODO
}
output.flush();
//output.close();
}
@Override
public void write(Kryo kryo, Output output, LocalDate localDate) {
output.writeInt(localDate.getYear());
output.writeInt(localDate.getMonthOfYear());
output.writeInt(localDate.getDayOfMonth());
final Chronology chronology = localDate.getChronology();
if (chronology != null && chronology != ISOChronology.getInstanceUTC()) {
throw new RuntimeException("Unsupported chronology: " + chronology);
}
}
@Override
public void write(Kryo kryo, Output output, Summary object) {
output.writeInt(object.value.length);
for (int i = 0; i < object.value.length; i++) {
output.writeFloat(object.value[i]);
}
output.writeInt(object.rmin.length);
for (int i = 0; i < object.rmin.length; i++) {
output.writeDouble(object.rmin[i]);
}
output.writeInt(object.rmax.length);
for (int i = 0; i < object.rmax.length; i++) {
output.writeDouble(object.rmax[i]);
}
output.writeInt(object.w.length);
for (int i = 0; i < object.w.length; i++) {
output.writeFloat(object.w[i]);
}
output.writeInt(object.capacity);
output.writeInt(object.cursor);
output.writeDouble(object.B);
output.writeBoolean(object.exact);
output.writeDouble(object.eps);
}
@Override
public void writeExternal(ObjectOutput out) throws IOException
{
ByteArrayOutputStream os = new ByteArrayOutputStream();
ObjectOutputStream obj = new ObjectOutputStream(os);
Output output = new Output(obj);
kryo.writeClassAndObject(output, rollingOperator);
byte[] outBytes = output.toBytes();
out.writeInt(outBytes.length);
out.write(outBytes, 0, outBytes.length);
out.flush();
}
private void serializeIntegers(List<Object> values, Output out) {
out.writeInt(values.size(), true);
for (Object o : values) {
Integer i = (Integer) o;
out.writeInt(i, true);
}
}
@Override
public void write(Kryo kryo, Output output,
Ip4Prefix object) {
byte[] octs = object.address().toOctets();
// It is always Ip4Address.BYTE_LENGTH
output.writeInt(octs.length);
output.writeBytes(octs);
output.writeInt(object.prefixLength());
}
@Override
public void write(Kryo kryo, Output output) {
output.writeLong(count);
byte[] expression = visibility.getExpression();
output.writeInt(expression.length);
output.writeBytes(expression);
}
@Override
public Slice toByteArray(T o)
{
final Output output = new Output(32, -1);
try {
kryo.writeClassAndObject(output, o);
} finally {
output.close();
}
return new Slice(output.getBuffer(), 0, output.position());
}
@Override
public void write(Kryo kryo, Output output, Boolean reducedResponse) {
super.writeMetadata(kryo, output, reducedResponse);
output.writeString(this.getShardId());
output.writeString(this.getDataType());
output.writeString(this.getUid());
}
public static byte[] serialize(final Object obj) {
return pool.run(new KryoCallback<byte[]>() {
@Override
public byte[] execute(Kryo kryo) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Output output = new Output(stream);
kryo.writeClassAndObject(output, obj);
output.close();
return stream.toByteArray();
}
});
}
@Override
public void write(Kryo kryo, Output output, ImmutableList<?> object) {
output.writeInt(object.size());
for (Object e : object) {
kryo.writeClassAndObject(output, e);
}
}