如何使用Java在Apache spark DataFrame中将unix epoch的列转换为Date



我有一个json数据文件,其中包含一个属性[creationDate],它是"long"数字类型的unix epoc。Apache Spark DataFrame模式如下所示:

根|--creationDate:long(nullable=true)|--id:long(nullable=true)|--postTypeId:long(可为null=true)|--标记:数组(nullable=true)||--element:string(containsNull=true)|--title:字符串(nullable=true)|--viewCount:long(nullable=true)

我想做一些groupBy"creationData_Year",需要从"creationDate"获得。

使用Java在DataFrame中进行这种转换的最简单方法是什么?

在检查了spark数据帧api和sql函数后,我得出了以下片段:

DateFrame df=sqlContext.read().json("MY_json_DATA_FILE");DataFrame df_DateConverted=df.withColumn("creationDt",from_unixtime(df.col("creation Date").diff(1000)));

为什么";creationDate";列除以";1000〃;是因为TimeUnit不同。组织";creationDate";是unix epoch在"毫秒";,然而spark sql" from_unixtime";被设计为在"";。

pyspark从Unix epoch毫秒转换为数据帧时间戳
df.select(from_unixtime((df.my_date_column.cast('bigint')/1000)).cast('timestamp').alias('my_date_column'))

在火花标量中,

spark.sql("select from_unixtime(1593543333062/1000) as ts").show(false)

相关内容

  • 没有找到相关文章

最新更新