如何使用SparkyR在Spark群集中存储数据?

如何使用SparkyR在Spark群集中存储数据?,r,sparklyr,R,Sparklyr,如果我连接到Spark群集,将一些数据复制到该群集,然后断开连接 library(dplyr) library(sparklyr) sc <- spark_connect("local") copy_to(sc, iris) src_tbls(sc) ## [1] "iris" spark_disconnect(sc) 库(dplyr) 图书馆(年) 从技术上讲,Spark是一个在计算机/集群上运行以执行任务的引擎。它不是数据库或文件系统。您可以在完成对文件系统的访问后保存数据,并在下一

如果我连接到Spark群集,将一些数据复制到该群集,然后断开连接

library(dplyr)
library(sparklyr)
sc <- spark_connect("local")
copy_to(sc, iris)
src_tbls(sc)
## [1] "iris"
spark_disconnect(sc)
库(dplyr)
图书馆(年)

从技术上讲,Spark是一个在计算机/集群上运行以执行任务的引擎。它不是数据库或文件系统。您可以在完成对文件系统的访问后保存数据,并在下一个会话中加载数据


这是因为数据不会在不同的spark会话中持久存在,这就是如果您断开连接,然后重新连接会发生的情况。@mtoto谢谢。因此,当您断开连接时,无法保持会话处于活动状态?能否尝试使用
sdf\u persist(storage.level=“DISK\u ONLY”)
?我不确定这会不会奏效。我从来没有试过用spark来做这个honest@RichieCotton可能只有“本地”模式下的问题。但是要连接到远程群集,您还需要在群集上安装rstudio服务器。@Alex群集之间没有永久性。人们似乎只是让集群无限期地运行,或者使用
spark\u write\u parquet()
spark\u read\u parquet()
(比
copy\u to()
快得多)保存/重新加载数据集。是的,这似乎是正确的。但是是否有解决方法?某种方法可以更紧密地将Spark与数据库或文件系统集成,以便在每次启动Spark时,仅加载的数据始终可用。。。,当然,您总是可以在下一个会话期间加载数据。但至少根据我的经验,将数据复制到Spark是很耗时的。好问题,我从未见过这样的事情。我通常做的是将迭代中的数据集保存为拼花文件,并根据需要加载它们。因此,如果您有一个需要很长时间才能运行的大型数据集,请加载它,执行初始工作集,保存该工作,然后在以后开始时,加载到该中间文件中。
sc <- spark_connect("local")
src_tbls(sc)
## character(0)
spark_disconnect(sc)