Как манипулировать Spark Dataframe в R с помощью sparklyr? - PullRequest
1 голос
/ 05 июля 2019

Я работаю в среде Spark и пытаюсь манипулировать некоторыми данными, которые появляются как tbl_spark. Проблема в том, что я не могу применить к нему какие-либо обычные функции манипулирования данными.

Я использовал df <- spark_read_table(sc,"tb_krill_sensordatatable_phoenix") для его импорта, и это кажется успешным, однако, когда я пытаюсь повернуть его с помощью tidyr::spread(), он говорит, что метод не применим для tbl_spark.

Сейчас я пытаюсь сделать: df_tbl <- as_tibble(df). Однако он работает уже несколько часов, и ничего не случилось.

Я не знаю, должен ли я использовать для импорта другую функцию, кроме spark_read_table (), или мне нужно преобразовать в другой обычный формат данных в R.


df_phoenix <- spark_read_table(sc,"tb_krill_sensordatatable_phoenix")
class(df_phoenix)
# [1] "tbl_spark" "tbl_sql"   "tbl_lazy"  "tbl"  

base_spread <- df_phoenix %>% 
   spread(key = sensorname, value = sensorvalue)
#Error in UseMethod("spread_") : 
#  no applicable method for 'spread_' applied to an object of class "c('tbl_spark', 'tbl_sql', 'tbl_lazy', 'tbl')"

aux <- as_tibble(df_phoenix)
#this one takes forever and nothing happens

1 Ответ

1 голос
/ 05 июля 2019

Возможно, попробуйте

base_spread <- df_phoenix %>% 
                sdf_pivot(sensorvalue ~ sensorname, fun.aggregate = list(Value = "first"))

, чтобы получить ту же функциональность, что и tidyr:spread.

. Вы должны получить данные в R, если хотите использовать функции tidyrчто можно сделать с помощью

df <- df_phoenix %>% collect()
...