如何使用 spark_apply 改变 NaN 值?
How to use spark_apply to change NaN values?
在使用 sdf_pivot 后,我留下了大量的 NaN 值,所以为了继续我的分析,我需要用 0 替换 NaN,我试过使用这个:
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
有人知道如何解决这个问题吗?
谢谢
你这里似乎有两个不同的问题。
- 权限问题。确保您拥有所需的权限并在必要时正确使用
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 测试。
在使用 sdf_pivot 后,我留下了大量的 NaN 值,所以为了继续我的分析,我需要用 0 替换 NaN,我试过使用这个:
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
有人知道如何解决这个问题吗? 谢谢
你这里似乎有两个不同的问题。
- 权限问题。确保您拥有所需的权限并在必要时正确使用
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 测试。