Erh*_*Kuo 6 java apache-spark spark-dataframe
我有一个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)
我想做一些groupBy"creationData_Year",需要从"creationDate"获取.
使用Java 在DataFrame中进行这种转换的最简单方法是什么?
检查spark dataframe api和sql函数后,我在下面的片段中说:
DateFrame df = sqlContext.read().json("MY_JSON_DATA_FILE");
DataFrame df_DateConverted = df.withColumn("creationDt", from_unixtime(stackoverflow_Tags.col("creationDate").divide(1000)));
"creationDate"列除以"1000"的原因是TimeUnit不同.orgin"creationDate"是" 毫秒 "中的unix时期,但是spark sql" from_unixtime "旨在处理" 秒 "中的unix时期.
小智 5
pyspark 从 Unix 纪元毫秒转换为数据帧时间戳
df.select(from_unixtime((df.my_date_column.cast('bigint')/1000)).cast('timestamp').alias('my_date_column'))
Run Code Online (Sandbox Code Playgroud)
在 Spark scala 中,
spark.sql("select from_unixtime(1593543333062/1000) as ts").show(false)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10411 次 |
| 最近记录: |