如何使用 sparklyr 在 R 中操作 Spark Dataframe?

How to manipulate Spark Dataframe in R with sparklyr?

我正在 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

也许试试

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

获得与 tidyr:spread 相同的功能。

如果您想使用 tidyr 函数,您必须将数据导入 R,这可以使用

来完成
df <- df_phoenix %>% collect()