scala Spark从datetime截断秒

o7jaxewo  于 6个月前  发布在  Scala
关注(0)|答案(1)|浏览(70)

我在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)。
我在这里错过了什么?任何解释问题及其修复的文档都会有所帮助。任何其他细节,如果需要,让我知道。

5uzkadbs

5uzkadbs1#

注意事项:
在通过spark加载数据时,我必须为每个表传递schema。有一次,我这样做了,并将timestamp分配为datetime列的加载数据类型,事情就解决了。

相关问题