在bigquery select操作中指定模式读取数据时获取空输出

ttisahbt  于 2021-06-01  发布在  Hadoop
关注(0)|答案(0)|浏览(168)

在使用指定的模式从bigquery表中选择数据时,我遇到了一个问题。

val tableData:RDD[String] = sqlContext.sparkContext.newAPIHadoopRDD(
hadoopConf,
classOf[GsonBigQueryInputFormat],
classOf[LongWritable],
classOf[JsonObject]).map(_._2.toString)

val jsonSchema:StructType = (new StructType).add("f1",IntegerType,true).add("f2",FloatType,true).add("f3",StringType,true).add("f4",BooleanType,true).add("f5",DateType,true).add("f6",TimestampType,true)

val df = sqlContext.read.schema(jsonSchema).json(tableData)

当我像上面那样指定模式时,我在数据框中得到的结果是空的。但是当没有指定模式时,我得到的结果是正确的。

df.printSchema()

root
|-- f1: integer (nullable = true)
|-- f2: float (nullable = true)
|-- f3: string (nullable = true)
|-- f4: boolean (nullable = true)
|-- f5: date (nullable = true)
|-- f6: timestamp (nullable = true)

 df.show
+----+----+----+----+----+----+
| f1| f2| f3| f4| f5| f6|
+----+----+----+----+----+----+
|null|null|null|null|null|null|

分析时,我发现bigquery以以下格式导出表数据: {"f1":"3","f2":2.7,"f3":"Anna","f4":true,"f5":"2014-10-15","f6":"2014-10-15 03:15:58 UTC"} .
当我使用json格式从tabledata读取数据时,它不能用指定的模式强制转换数据并返回null结果。
如何使用指定的模式得到正确的结果?如果您对此有任何想法/解决方案,请提出建议。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题