【问题标题】:SparkR. Convert UTC to local time for all observations, multiple timezones火花R。将所有观测值、多个时区的 UTC 转换为本地时间
【发布时间】:2017-04-15 05:02:35
【问题描述】:

我是 SparkR 的新手,边走边学,在 2.2.0 版 - SNAPSHOT 上。我有一个带有一列 UTC 时间戳、一列时区的 SparkDataFrame。例如:

mydates<- c("2012-12-22 14:23:05", "2015-01-19 16:37:42", "2017-03-02 08:22:55")
mytimeZones<- c("America/Chicago", "America/New_York", "Pacific/Galapagos")
dfr<- data.frame(date=mydates, timezone=mytimeZones)

dfs<- SparkR::createDataFrame(dfr)

我想做的是为我的数据集中的每个观察创建一列当地时间。我看到from_utc_timestamp() 函数接收一列时间戳和一个表示所需时区转换的字符串。我的问题是我有两个专栏。鉴于此,我想知道工作流程需要是什么,以及是否有更多 SparkR 经验的人愿意深入了解我如何解决这个问题?目前,我尝试过这样的事情:

dftest<- withColumn(dfs, "LocalTime", 
  SparkR:::foreach(dfs, function(x){from_utc_timestamp(y=x$date, x=x$timezone)})
)

但没有成功。我希望有人在 SparkR 中解决了这个问题并可以帮助我。谢谢你的时间。 亲切的问候, 内特

【问题讨论】:

    标签: r apache-spark sparkr


    【解决方案1】:

    您可以使用selectExpr

    selectExpr(dfs, "*", "from_utc_timestamp(date, timezone) AS LocalTime")
    

    expr:

    withColumn(dfs, "LocalTime", expr("from_utc_timestamp(date, timezone)"))
    

    在更简单的情况下,时区是一个常量字符串,直接调用from_utc_timestamp 就可以了:

    withColumn(dfs, "LocalTime", 
      from_utc_timestamp(column("date"), "America/New_York")
    

    不幸的是,没有签名为(Column, Column) =&gt; Columnfrom_utc_timestamp,因此是SQL-ish 解决方案。

    【讨论】:

    • 这正是我想要/需要的。非常感谢。 --nate
    猜你喜欢
    • 2019-05-31
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2020-06-12
    相关资源
    最近更新 更多