如何使用 Java 将 Apache spark DataFrame 中的 unix 纪元列转换为日期?
How do I convert column of unix epoch to Date in Apache spark DataFrame using Java?
我有一个 json 数据文件,其中包含一个 属性 [creationDate],它是 "long" 数字类型的 unix epoc。 Apache Spark DataFrame 架构如下所示:
root
|-- creationDate: long (nullable = true)
|-- id: long (nullable = true)
|-- postTypeId: long (nullable = true)
|-- tags: array (nullable = true)
| |-- element: string (containsNull = true)
|-- title: string (nullable = true)
|-- viewCount: long (nullable = true)
我想做一些需要从 "creationDate".
获取的 groupBy "creationData_Year"
使用 Java 在 DataFrame 中进行这种转换的最简单方法是什么?
检查 spark dataframe api 和 sql 函数后,我得出以下代码片段:
DateFrame df = sqlContext.read().json("MY_JSON_DATA_FILE");
DataFrame df_DateConverted = df.withColumn("creationDt", from_unixtime(Whosebug_Tags.col("creationDate").divide(1000)));
之所以"creationDate"列除以“1000”是因为TimeUnit不同。来源 "creationDate" 是“milli-second”中的 unix 纪元,但是 spark sql “from_unixtime”旨在处理“second”中的 unix 纪元。
pyspark 从 Unix 纪元毫秒转换为数据帧时间戳
df.select(from_unixtime((df.my_date_column.cast('bigint')/1000)).cast('timestamp').alias('my_date_column'))
在 spark scala 中,
spark.sql("select from_unixtime(1593543333062/1000) as ts").show(false)
我有一个 json 数据文件,其中包含一个 属性 [creationDate],它是 "long" 数字类型的 unix epoc。 Apache Spark DataFrame 架构如下所示:
root |-- creationDate: long (nullable = true) |-- id: long (nullable = true) |-- postTypeId: long (nullable = true) |-- tags: array (nullable = true) | |-- element: string (containsNull = true) |-- title: string (nullable = true) |-- viewCount: long (nullable = true)
我想做一些需要从 "creationDate".
获取的 groupBy "creationData_Year"使用 Java 在 DataFrame 中进行这种转换的最简单方法是什么?
检查 spark dataframe api 和 sql 函数后,我得出以下代码片段:
DateFrame df = sqlContext.read().json("MY_JSON_DATA_FILE"); DataFrame df_DateConverted = df.withColumn("creationDt", from_unixtime(Whosebug_Tags.col("creationDate").divide(1000)));
之所以"creationDate"列除以“1000”是因为TimeUnit不同。来源 "creationDate" 是“milli-second”中的 unix 纪元,但是 spark sql “from_unixtime”旨在处理“second”中的 unix 纪元。
pyspark 从 Unix 纪元毫秒转换为数据帧时间戳
df.select(from_unixtime((df.my_date_column.cast('bigint')/1000)).cast('timestamp').alias('my_date_column'))
在 spark scala 中,
spark.sql("select from_unixtime(1593543333062/1000) as ts").show(false)