【问题标题】:Finding maximum value of a date column using sparklyr in databricks在数据块中使用 sparklyr 查找日期列的最大值
【发布时间】:2021-01-12 11:12:27
【问题描述】:

我只是想使用在 databricks 中使用 sparklyr 导入的数据来查找日期列的最大值:

data %>% dplyr::select(date_variable) %>% max()

这会返回一个错误:

Error in max(.) : invalid 'type' (list) of argument Error in max(.) : invalid 'type' (list) of argument

如果我只做max(data$date_variable),它会给出-infmax()min() 肯定是最常用的函数之一吗?我在这里做错了什么?

【问题讨论】:

    标签: r databricks sparklyr


    【解决方案1】:
    library(sparklyr)
    
    sc <- spark_connect(method = "databricks")
    
    data <- sdf_sql(sc, "SELECT DATE('2020-01-01') AS date_variable UNION SELECT DATE('2020-01-02') AS date_variable")
    

    data 是 Spark 数据帧。 select 的结果仍然是 Spark 数据帧,不能与 max 一起使用。

    data %>% dplyr::select(date_variable) %>% class()
    #> [1] "tbl_spark" "tbl_sql"   "tbl_lazy"  "tbl"
    

    获取最大值有两种主要方法。

    如果您使用pull,则结果是一个Date 向量,可以与max 一起使用。

    data %>% dplyr::pull(date_variable) %>% max()
    #> [1] "2020-01-02"
    

    这种方法的缺点是计算不是在 Spark 中完成的。要在 Spark 中进行计算,请使用 summarise

    data %>% dplyr::summarise(max_date = max(date_variable))
    #> # Source: spark<?> [?? x 1]
    #>   max_date  
    #>   <date>    
    #> 1 2020-01-02
    

    【讨论】:

    • 您好,感谢您的回答。我确实使用 summarise 函数获得了所需的值,但即使这样也需要太长时间 - 2 分钟。有没有更好的方法来做到这一点?还拉类似于收集吗?我对 sparklyr 很陌生,对在 RStudio 工作并不陌生。
    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 2021-09-23
    • 2020-01-29
    • 1970-01-01
    • 2012-01-08
    • 2022-08-20
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多