我在bigquery中有一个表。考虑它有一个名为“A”的列,其数据类型是datetime。现在,我有一个scala spark作业读取这个表。需要注意的一点是,所有值的格式都是yyyy-mm-ddTHH:MM:SS。其中,HH:MM:SS将始终是00:00:00。发生的是,当我在spark中读取这个表时,它将数据解释为字符串,并截断秒部分。因此,输出看起来像这样:2011-01- 01 T00:00。
我尝试在阅读表时在选项函数中使用timestampFormat标志。但是,没有效果。
下面是读取代码:
override def read(spark: SparkSession, readConfig: Map[String, Any]): DataFrame = {
spark
.read
.format("bigquery")
.option("timestampFormat", "yyyy-MM-dd'T'HH:mm:ss")
.option(
"table",
readConfig("dataReadProject") + "." + readConfig("dataReadTable")
)
.load()
}
字符串
Spark环境在Databricks上,具体信息是Databricks版本:10.4LTS(包括Apache Spark 3.2.1,Scala 2.12)。
我在这里错过了什么?任何解释问题及其修复的文档都会有所帮助。任何其他细节,如果需要,让我知道。
1条答案
按热度按时间5uzkadbs1#
注意事项:
在通过spark加载数据时,我必须为每个表传递schema。有一次,我这样做了,并将timestamp分配为datetime列的加载数据类型,事情就解决了。