- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试将字符串字段转换为 Spark DataFrame 中的 TimestampType 时,输出值具有微秒精度(yyyy-MM-dd HH:mm:ss.S
)。但我需要格式为 yyyy-MM-dd HH:mm:ss
即,不包括微秒精度。另外,我想在写入 Parquet 文件时将其保存为时间戳字段。所以我字段的数据类型应该是格式为 yyyy-MM-dd HH:mm:ss
我尝试使用 TimestampType 作为
col("column_A").cast(TimestampType)
or
col("column_A").cast("timestamp")
将字段转换为时间戳。这些能够将字段转换为时间戳,但精度为微秒。
任何人都可以帮助将时间戳数据类型保存到具有所需格式规范的 Parquet 文件中。
编辑
输入:
val a = sc.parallelize(List(("a", "2017-01-01 12:02:00.0"), ("b", "2017-02-01 11:22:30"))).toDF("cola", "colb")
scala> a.withColumn("datetime", date_format(col("colb"), "yyyy-MM-dd HH:mm:ss")).show(false)
+----+---------------------+-------------------+
|cola|colb |datetime |
+----+---------------------+-------------------+
|a |2017-01-01 12:02:00.0|2017-01-01 12:02:00|
|b |2017-02-01 11:22:30 |2017-02-01 11:22:30|
+----+---------------------+-------------------+
scala> a.withColumn("datetime", date_format(col("colb"), "yyyy-MM-dd HH:mm:ss")).printSchema
root
|-- cola: string (nullable = true)
|-- colb: string (nullable = true)
|-- datetime: string (nullable = true)
在上面,我们得到了正确的时间戳格式,但是当我们打印 Schema 时,datetime 字段是 String 类型,但我这里需要一个时间戳类型。
现在,如果我尝试将字段转换为时间戳,格式将设置为微秒精度,这不是预期的。
scala> import org.apache.spark.sql.types._
import org.apache.spark.sql.types._
scala> val a = sc.parallelize(List(("a", "2017-01-01 12:02:00.0"), ("b", "2017-02-01 11:22:30"))).toDF("cola", "colb")
a: org.apache.spark.sql.DataFrame = [cola: string, colb: string]
scala> a.withColumn("datetime", date_format(col("colb").cast(TimestampType), "yyyy-MM-dd HH:mm:ss").cast(TimestampType)).show(false)
+----+---------------------+---------------------+
|cola|colb |datetime |
+----+---------------------+---------------------+
|a |2017-01-01 12:02:00.0|2017-01-01 12:02:00.0|
|b |2017-02-01 11:22:30 |2017-02-01 11:22:30.0|
+----+---------------------+---------------------+
scala> a.withColumn("datetime", date_format(col("colb").cast(TimestampType), "yyyy-MM-dd HH:mm:ss").cast(TimestampType)).printSchema
root
|-- cola: string (nullable = true)
|-- colb: string (nullable = true)
|-- datetime: timestamp (nullable = true)
我期望格式为 yyyy-MM-dd HH:mm:ss
并且该字段的数据类型为 timestamp
提前致谢
最佳答案
我认为您缺少的是时间戳/日期时间字段在 native 存储中没有可读格式。格式为 float 或 INT96 或其他格式,具体取决于数据库。为可读性格式化日期时间/时间戳一直是一个报告问题(即,由准备显示数据的工具执行),这就是为什么您注意到当您为日期提供字符串格式时它正确转换它以存储作为一个字符串。数据库 (spark) 只准确地存储它需要准确知道时间值是多少的内容。
您可以指定时间戳值没有毫秒,即毫秒值 0,但不能指定它不应显示毫秒。
这类似于在数字列上指定舍入行为(也是一个报告问题)。
关于scala - 在 spark DataFrame- Scala 中格式化 TimestampType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44956300/
我正在尝试创建自己的 Hibernate 映射以使用 Hibernate 将 UTC 时间戳读写到 DB,因此我正在扩展 Hibernate TimestampType 类,如下所示,但我总是收到以下
我有两个数据帧,我想基于一列加入它们,但需要注意的是,该列是一个时间戳,并且该时间戳必须在某个偏移量(5 秒)内才能加入记录。更具体地说,记录在 dates_df与 date=1/3/2015:00:
我有一个数据框,我想将其插入到 Spark 中的 Postgresql 中。在 spark 中,DateTimestamp 列为字符串格式。在 postgreSQL 中,它是没有时区的 TimeSta
我是 spark 和 scala 的新手。正在尝试读取文本文件并将其保存为 parquet 文件。对我来说,我正在使用的字段之一是 TimeStamp,它的文档说 spark1.1.0 支持 java
我有一些包含在字符串数组中的数据,如下所示(仅作为示例): val myArray = Array("1499955986039", "1499955986051", "1499955986122")
有一个包含事件和特定时间戳的表。我很难使用 Pyspark 2.0 API 计算过去的天数。当时间戳遵循另一种格式(yyyy-mm-dd)时,我设法做同样的事情 +--------------
我有以下在 Pyspark 中无法完全理解的问题。我有以下日期时间对象 utc_now = datetime.now().replace(tzinfo=tz.tzutc()) utc_now # da
当我尝试将字符串字段转换为 Spark DataFrame 中的 TimestampType 时,输出值具有微秒精度(yyyy-MM-dd HH:mm:ss.S)。但我需要格式为 yyyy-MM-dd
在我的数据框中,我有一列 TimestampType 格式为“2019-03-16T16:54:42.968Z”的列,我想将其转换为格式为“201903161654”的 StringType 列,而不
在我的数据框中,我有一列 TimestampType 格式为“2019-03-16T16:54:42.968Z”的列,我想将其转换为格式为“201903161654”的 StringType 列,而不
我有一个看起来像这样的 DataFrame。我想在 date_time 字段的当天进行操作。 root |-- host: string (nullable = true) |-- user_id
我有带有 take(5) 顶行的 Spark DataFrame,如下所示: [Row(date=datetime.datetime(1984, 1, 1, 0, 0), hour=1, value=
我正在尝试从以下列表中创建一个数据框: data = [(1,'abc','2020-08-20 10:00:00', 'I'), (1,'abc','2020-08-20 10:01:00', 'U
我有一个 Pandas 数据框,我正在写入 HDFS 中的一个表。我可以在 Srum_Entry_Creation 时将数据写入表是 StringType() ,但我需要它是 TimestampTyp
我有这个包含以下内容的 csv 文件 (test.csv): COLUMN_STRING;COLUMN_INT;COLUMN_TIMESTAMP String_Value_1;123456;20131
我有一列使用 org.hibernate.type.TimestampType 在 hibernate 中映射。如何使用 native Oracle SQL 根据 Oracle TIMESTAMP 存
我一直在使用 pyspark 3.0。我在 StringType 中有一个包含“时间”列的数据框。我正在尝试将其转换为时间戳。数据框如下所示。 +---------------+ |
我在Databricks笔记本上使用Spark 2.1和Scala 2.11 确切的TimestampType是什么? 从SparkSQL's documentation知道,官方的时间戳类型是Tim
我正在阅读的 CSV 文件包含 3 列。以下是列的格式。 DateTime1 的格式为 "mm/dd/yyyy hh:mm:ss" DateTime2 格式为"dd/mm/yy hh:mm:ss" 日
我在连接到 cassandra 时遇到问题。它总是告诉我: Exception in thread "main" java.lang.RuntimeException: org.apache.cass
我是一名优秀的程序员,十分优秀!