GsonBigQueryInputFormat 将整数保存为字符串



我一直在使用Google Bigquery Hadoop Connector,似乎在尝试将表的输出保存到json时,生成的json具有实际上是数字(整数或长整型(转换为字符串的字段。

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

{"foo":"1234"}

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

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

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

任何帮助将不胜感激,我已经坚持了好几天了!

丹尼斯 既然你是这个项目的贡献者,也许你可以帮忙

除了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

相关内容

最新更新