GsonBigQueryInputFormat将整数保存为字符串

时间:2017-02-05 19:29:40

标签: json hadoop apache-spark google-bigquery

我一直在使用Google Bigquery Hadoop Connector,看起来在尝试将表的输出保存到json时,生成的json的字段实际上是转换为字符串的数字(Ints或Longs)。

例如,如果我在Bigquery中的表有一列" foo"类型"整数"输出json将是

{"foo":"1234"}

这基本上使任何json解析器读取该字段都有一个字符串而不是int。

我使用以下方法保存文件:

.newAPIHadoopRDD(
        hadoopConf,
        classOf[GsonBigQueryInputFormat],
        classOf[LongWritable],
        classOf[JsonObject])

我真的很感激任何帮助,我已经坚持了好几天!

Dennis因为你是该项目的贡献者,也许你可以提供帮助

1 个答案:

答案 0 :(得分:0)

除了Mosha在关于JSON没有整数类型的评论中提到的内容之外,在您的情况下,您可能想尝试使用AvroBigQueryInputFormat。 Avro将支持正确的数字类型。唯一的变化是:

import org.apache.avro.generic.GenericData
import com.google.cloud.hadoop.io.bigquery.AvroBigQueryInputFormat
...

// Load data from BigQuery.
val tableData = sc.newAPIHadoopRDD(
    conf,
    classOf[AvroBigQueryInputFormat],
    classOf[LongWritable],
    classOf[GenericData.Record]).cache