对于任何软件架构师来说,这可能是一个基本的问题,但我很难理解这个概念。
假设我在hdfs上存储了一个大的Spark。我现在执行如下过滤操作:
df_new = my_big_hdfs_df.where("my_column='testvalue'")
print(type(df_new))class‘>类pyspk.sql.dataframe.DataFrame’>
df_new究竟存储在哪里?如果这是一条普通的蟒蛇,我会猜在记忆中的某个地方。但对于PySpark来说也是这样吗?还是只是某种参考?它是否保存在hdfs的某个磁盘上?
发布于 2018-03-19 17:05:53
df_new是在where函数中应用条件后对my_big_hdfs_df的一种转换。
换句话说,df_new是一个逻辑计划,一旦调用action,就会对数据执行该计划。
在调用show()、count() foreach()等操作之前,不会触及数据。
一旦调用了一个操作,数据就会被转换,所有的转换都存储在内存中。有时,当调用persist()时,它们会溢出到磁盘中。并在调用要保存的操作时保存到磁盘。
https://stackoverflow.com/questions/49368475
复制相似问题