问题
我有一个巨大的sparkDataframe,叫做x。我用的是databricks。x是数十亿条记录,太大了,无法在一台机器上收集。我该怎么做才能让它工作
dplyr::summarize_all(x,mean)
更多信息
这是我当前收到的错误消息:
Error in UseMethod("tbl_vars") :
no applicable method for 'tbl_vars' applied to an object of class "SparkDataFrame"
和
class(x)
返回:[1]“sparkdataframe”attr(,“package”)[1]“sparkr”
这本书《用r掌握spark》有一个例子,加载一个微小的rDataframe,然后在上面运行所有的程序:
cars <- copy_to(sc, mtcars)
summarize_all(cars, mean)
注意:上面的代码在我的databricks集群上工作,并返回一个很好的文本块:
# Source: spark<?> [?? x 11]
mpg cyl disp hp drat wt qsec vs am gear carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 20.1 6.19 231. 147. 3.60 3.22 17.8 0.438 0.406 3.69 2.81
同样的书让我相信我可以在巨大的sparkDataframe上使用这个和类似的函数。
还有
class(cars)
退货:
[1] "tbl_spark" "tbl_sql" "tbl_lazy" "tbl"
很明显,我需要将sparkDataframe转换为tbl\u spark、tbl\u sql、tbl\u lazy或tbl,这样我就可以将它传递给dplyr::summary\u all,但我已经搜索了所有地方,并询问了Maven,无法找到如何做到这一点。
1条答案
按热度按时间b5lpy0ml1#
你说得对
SparkR
以及sparklyr
不同的api不能很好地结合在一起。您可以转换SparkR
要与一起使用的Dataframesparklyr
通过使用临时表。下面是一个例子
SparkR
Dataframe。创建临时表。
把它装进
sparklyr
.