【问题标题】:How to use spark_apply to change NaN values?如何使用 spark_apply 更改 NaN 值?
【发布时间】:2018-05-21 19:18:38
【问题描述】:

使用 sdf_pivot 后,我​​留下了大量的 NaN 值,所以为了继续我的分析,我需要将 NaN 替换为 0,我尝试过使用这个:

data <- data %>% 
  spark_apply(function(e) ifelse(is.nan(e),0,e))

这会产生以下错误:

Error in file(con, "r") : cannot open the connection
In addition: Warning message:
In file(con, "r") :
  cannot open file 
'C:\.........\file18dc5a1c212e_spark.log':Permission denied

我正在使用 Spark 2.2.0 和最新版本的 sparklyr

有没有人知道如何解决这个问题? 谢谢

【问题讨论】:

    标签: r apache-spark nan sparklyr


    【解决方案1】:

    你这里似乎有两个不同的问题。

    • 权限问题。确保您拥有所需的权限并在必要时正确使用winutils
    • NULL 替换。

    后一种可以使用内置函数解决,不需要低效spark_apply

    df <- copy_to(sc, 
      data.frame(id=c(1, 1, 2, 3), key=c("a", "b", "a", "d"), value=1:4))
    
    pivoted <- sdf_pivot(df, id ~ key)
    pivoted
    
    # Source:   table<sparklyr_tmp_f0550e429aa> [?? x 4]
    # Database: spark_connection
         id     a     b     d
      <dbl> <dbl> <dbl> <dbl>
    1     1     1     1   NaN
    2     3   NaN   NaN     1
    3     2     1   NaN   NaN
    
    pivoted %>% na.replace(0)
    
    # Source:   table<sparklyr_tmp_f0577e16bf1> [?? x 4]
    # Database: spark_connection
         id     a     b     d
      <dbl> <dbl> <dbl> <dbl>
    1     1     1     1     0
    2     3     0     0     1
    3     2     1     0     0
    

    使用sparklyr 0.7.0-9105 测试。

    【讨论】:

    • 非常感谢,这就是我要找的东西
    • 我也是!非常简单。
    猜你喜欢
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 2021-08-04
    • 2021-03-14
    相关资源
    最近更新 更多