Как зациклить на отдельный результат столбца из списка, возвращенного реализацией dplyr в sparklyr? - PullRequest
0 голосов
/ 27 апреля 2019

Учитывая пример sparklyr, предоставленный spark studio здесь

library(sparklyr)
packageVersion("sparklyr")
#‘0.8.4’
sc <- spark_connect(master = "local")
#* Using Spark: 2.3.0
install.packages(c("nycflights13", "Lahman"))
library(dplyr)
flights_tbl <- copy_to(sc, nycflights13::flights, "flights")
src_tbls(sc)
#[1] "flights"

, пытаясь зациклить различные значения,

carriers <- flights_tbl %>% filter(dep_delay >= 1000) %>% dplyr::select(carrier) %>% dplyr::distinct()
> carriers
# Source:   lazy query [?? x 1]
# Database: spark_connection
  carrier
  <chr>  
1 MQ     
2 HA     
3 AA     
> typeof(carriers)
[1] "list"

вот так:

 for (carrier in carriers){
      print(carrier)
    }

возвращает этот неожиданный результат:

> for (carrier in carriers){
+   print(carrier)
+ }
spark connection master=local[4] app=sparklyr local=TRUE

From: flights
<Table: flights>
-> filter()
   - ~dep_delay >= 1000
-> select()
   - ~carrier
-> distinct()

вместо простого:

 MQ     
 HA     
 AA  

как перебрать различные значения?

1 Ответ

0 голосов
/ 27 апреля 2019

хорошо, по-видимому, сначала нужно получить один искр "собери" (см. здесь )

rcarriers <- collect(carriers)
> typeof(rcarriers)
[1] "list"
> for (carrier in rcarriers){
+   print(carrier)
+ }
[1] "MQ" "HA" "AA"
...