Ich habe den Google BigQuery Hadoop Connector verwendet und es scheint beim Versuch, die Ausgabe einer Tabelle in JSON zu speichern, der resultierende JSON Felder, die tatsächlich Zahlen (Ints oder Longs) in Zeichenfolgen konvertiert.GsonBigQueryInputFormat speichert Ints als Strings
Zum Beispiel, wenn meine Tabelle in BigQuery eine Spalte „foo“ hat vom Typ „Integer“ der Ausgang json wäre
{"foo":"1234"}
Dies macht im Grunde jeder json Parser gelesen, dass Feld eine Zeichenfolge statt int .
ich die Datei speichere mit:
.newAPIHadoopRDD(
hadoopConf,
classOf[GsonBigQueryInputFormat],
classOf[LongWritable],
classOf[JsonObject])
Jede Hilfe wirklich auf diese geschätzt würde, ich habe tage es fest!
Dennis da Ihr ein Beitrag über das Projekt, vielleicht können Sie
Ich denke, dies liegt daran, JSON hat keinen Integer-Typ, nur Zahl Typ als Fließkomma implementiert, so würde die Übersetzung BQ Integer JSON-Nummer Genauigkeit verlieren. Die Übersetzung in eine Zeichenfolge verliert nicht die Genauigkeit, erfordert jedoch, dass die Anwendung in eine Ganzzahl zurückübersetzt wird. –
Danke @MoshaPasumansky, also muss ich eine Methode implementieren, die eine generische JSON-Zeichenfolge übernimmt und sie in Integer/Double/Float übersetzt? –
Ja, obwohl diese Methode nur funktioniert, wenn Ihre ganzen Zahlen klein genug sind, um in JSON-Nummer zu gehen, ohne Genauigkeit zu verlieren. –