Wie man ein Datum mit AVRO in Java serialisiert

8

Ich versuche tatsächlich, Objekte, die Daten mit Avro enthalten, zu serialisieren, und das deserialisierte Datum stimmt nicht mit dem erwarteten Wert überein (getestet mit avro 1.7.2 und 1.7.1). Hier ist die Klasse, die ich serialisieren:

%Vor%

Der zur Serialisierung / Deserialisierung verwendete Code:

%Vor%

Und die Ausgabe:

%Vor%

Ist es mit einem bekannten Fehler verbunden oder hängt es damit zusammen, wie ich das Objekt serialisieren möchte?

    
Miguel L. 06.11.2012, 16:47
quelle

2 Antworten

6

Ich denke, dass AVRO an diesem Punkt kein Datum serialisiert. Was ich tun würde, ist es in eine andere Klasse zu wickeln und bei so lange (date.gettime ()) während Avro Leute zu speichern füge diese Funktion hinzu . Und der Grund, dass Sie unterschiedliche Datumswerte sehen, ist das jedes Mal, wenn Sie (und Avro) erstellen ein Date-Objekt, initialisiert es das Datum mit der aktuellen Systemzeit.

    
amas 20.11.2012, 00:37
quelle
7

Avro 1.8 hat jetzt ein Datum "logicalType", das int kennzeichnet. Zum Beispiel:

{"name": "Datum", "Typ": "int", "logischerTyp": "Datum"}

Zitieren der Spezifikation: "Ein logischer Datentypen kennzeichnet einen Avro-Int, wobei der Int die Anzahl der Tage ab der Unix-Epoche vom 1. Januar 1970 (ISO-Kalender) speichert."

    
teu 10.10.2016 18:07
quelle

Tags und Links