2017-02-23 89 views
2

如果我连接到一个Spark集群,一些数据复制到它,并断开,...如何使用sparklyr将数据存储在Spark群集中?

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

那么下一次我连接到星火,该数据是不存在的。

sc <- spark_connect("local") 
src_tbls(sc) 
## character(0) 
spark_disconnect(sc) 

这与使用数据库的情况不同,无论连接多少次,数据就在那里。

如何在连接之间持续保存Spark集群中的数据?

我以为sdf_persist()可能是我想要的,但它似乎没有。

+3

这是因为数据不会通过不同的火花会议,这是发生了什么,如果你坚持断开比再次重新连接。 – mtoto

+0

@mtoto谢谢。所以当你断开连接时,没有办法让会话保持活动状态? –

+0

你可以尝试'sdf_persist(storage.level =“DISK_ONLY”)'?我不确定这是否会奏效。我从来没有试过用火花诚实 – eliasah

回答

1

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

https://en.wikipedia.org/wiki/Apache_Spark

+0

是的,这似乎是正确的。但是有没有解决这个问题的方法?有什么方法可以更紧密地将Spark与数据库或文件系统集成在一起,以便每次启动Spark时始终可以使用仅加载的数据? ...当然,您可以随时在下一个会话中加载数据。但至少以我的经验,将数据复制到Spark是非常耗时的。 –

+1

好问题,我还没有见过类似的东西。我通常所做的就是将迭代中的数据集保存为parquet文件并根据需要加载它们。因此,如果有大量数据需要很长时间才能运行,请加载它,执行一组初始工作,保存该工作,稍后再开始时加载该中间文件。 –

相关问题