首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spark dataframe添加新的列问题-结构化流

Spark dataframe添加新的列问题-结构化流
EN

Stack Overflow用户
提问于 2018-04-01 08:00:28
回答 4查看 2.1K关注 0票数 4

我正在使用spark Structured。我有一个数据帧,并添加了一个新列"current_ts“。

inpuDF.withColumn("current_ts", lit(System.currentTimeMillis()))

这不会使用当前纪元时间更新每一行。当作业被触发时,它更新相同的epcoh时间,从而使DF中的每一行都具有相同的值。这在正常的spark工作中效果很好。这是spark structured的问题吗?

EN

回答 4

Stack Overflow用户

发布于 2018-04-01 16:47:34

spark将你的转换记录为谱系图,并且只在某个动作被调用时执行该图。因此,它将调用

System.currentTimeMillis()

当某个动作被触发时。我不理解的是,你觉得其中令人困惑的是什么,或者你试图实现的是什么。谢谢。

票数 1
EN

Stack Overflow用户

发布于 2018-04-08 22:58:09

Spark有一个function to create a column with current timestamp。您的代码应如下所示:

import org.apache.spark.sql.functions

// ...

inpuDF.withColumn("current_ts", functions.current_timestamp())
票数 1
EN

Stack Overflow用户

发布于 2019-03-20 08:44:30

您的方法的问题是使用lit,它是文字函数或常量。Spark会将其视为从驱动程序传递过来的常量。因此,当您执行作业时,文字将根据您执行的时间进行计算。所有记录都有相同的时间戳。您需要使用函数来代替。current_timestamp()应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49593591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档