Ошибка в доступе к столбцам при чтении данных из объектов sparlyr tibble - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь скопировать базовый c пример ALS в sparK по этой ссылке:

https://rdrr.io/cran/sparklyr/man/ml_als.html

movies <- data.frame(
  user   = c(1, 2, 0, 1, 2, 0),
  item   = c(1, 1, 1, 2, 2, 0),
  rating = c(3, 1, 2, 4, 5, 4)
)
movies_tbl <- sdf_copy_to(sc, movies)

model <- ml_als(movies_tbl, rating ~ user + item)

ml_predict(model, movies_tbl)

ml_recommend(model, type = "item", 1)

Этот код работает для меня без проблем проблема в том, что я не могу манипулировать значениями в таблице прогнозов, которая имеет следующий формат:

prediction = ml_recommend(model, type = "item", 1)


> prediction
# Source: spark<?> [?? x 4]
   user recommendations  item rating
  <int> <list>          <int>  <dbl>
1     1 <list [2]>          2   3.98
2     2 <list [2]>          2   4.86
3     0 <list [2]>          0   3.88

Я не могу выбрать столбцы, для которых я получаю нулевой ответ

> prediction$prediction
NULL

И не фильтровать их:

> prediction %>%
+   select  (user)
Error in select(., user) : object 'user' not found

Я даже не могу прочитать данные таким образом из исходного кадра данных:

movies_tbl %>%
  select  (user)

Возвращает ту же ошибку, что и выше.

1 Ответ

0 голосов
/ 19 марта 2020

При использовании Spark от R вы можете использовать (1) SQL, например, через пакет DBI или (2) пакет dplyr. Вы не можете использовать базовые функции R, такие как подмножество с $.

# Using DBI
dbGetQuery(sc, "SELECT count(*) FROM movies")
  count(1)
1        6

# Using dplyr
select(prediction, user)
# Source: spark<?> [?? x 1]
   user
  <int>
1     2
2     0
3     1

Чтобы вернуть данные в R, используйте функцию collect(), доступную в sparklyr.

...