Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SparkR计算数据帧中每列缺失值的数量?_Sparkr - Fatal编程技术网

如何使用SparkR计算数据帧中每列缺失值的数量?

如何使用SparkR计算数据帧中每列缺失值的数量?,sparkr,Sparkr,我正在处理一个2,5 GB的csv文件,其中包含110万行和1000个数字列,这些列似乎很少填充。我目前在一个有8GB内存的单核VM上执行Spark,数据被分割成16个分区 我尝试了以下方法,但需要很长时间: ldf <- dapplyCollect( df, function(df.partition) { apply(df.partition, 2, function(col) {sum(is.na(col))}) }) ldf这里有一种方

我正在处理一个2,5 GB的csv文件,其中包含110万行和1000个数字列,这些列似乎很少填充。我目前在一个有8GB内存的单核VM上执行Spark,数据被分割成16个分区

我尝试了以下方法,但需要很长时间:

ldf <- dapplyCollect(
     df,
     function(df.partition) {
       apply(df.partition, 2, function(col) {sum(is.na(col))})
     })

ldf这里有一种方法,使用
sparkyr
dplyr
。为了得到一个可重复的示例,我使用了
nycflights13
包中的航班数据(19个变量的336776 obs.)

库(nycflights13)
图书馆(年)
图书馆(dplyr)
sc%
dplyr::mutate_all(as.numeric)%%>%
dplyr::汇总所有(总和)%%>%
dplyr::collect()
你得到结果了吗

> collect(flights_spark_isna_count)
# A tibble: 1 × 19
   year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin  dest air_time
  <dbl> <dbl> <dbl>    <dbl>          <dbl>     <dbl>    <dbl>          <dbl>     <dbl>   <dbl>  <dbl>   <dbl>  <dbl> <dbl>    <dbl>
1     0     0     0     8255              0      8255     8713              0      9430       0      0    2512      0     0     9430
# ... with 4 more variables: distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dbl>
>收集(航班数\u spark\u isna\u计数)
#一个tibble:1×19
年-月-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日-日
1     0     0     0     8255              0      8255     8713              0      9430       0      0    2512      0     0     9430
# ... 还有4个变量:距离、小时、分钟、时间和小时
在我的旧笔记本电脑中,所有这些代码大约需要30秒(也就是说,包括启动Spark会话,将数据读入Spark,然后对NAs进行计数;我认为最后一步不到10秒)


当然,您的数据集更大,但也许它可以工作。(我也在我正在处理的一个更大的数据集数据中尝试了它,所以大约有200万obs.和146个变量,只需几分钟)。

我仍然希望得到答案。
> collect(flights_spark_isna_count)
# A tibble: 1 × 19
   year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin  dest air_time
  <dbl> <dbl> <dbl>    <dbl>          <dbl>     <dbl>    <dbl>          <dbl>     <dbl>   <dbl>  <dbl>   <dbl>  <dbl> <dbl>    <dbl>
1     0     0     0     8255              0      8255     8713              0      9430       0      0    2512      0     0     9430
# ... with 4 more variables: distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dbl>