Spark将检索到的数据保存在Azure Databricks的何处?
我想了解Azure databricks中Spark将检索到的数据保存在Azure Databricks的何处?,azure,apache-spark,azure-databricks,Azure,Apache Spark,Azure Databricks,我想了解Azure databricks中RAM和存储之间的区别 假设我正在从Azure data lake(ADLS Gen 2)读取csv数据,如下所示: df = spark.read.csv("path to the csv file").collect() 我知道spark中的read方法是spark中的Transformation方法。这不会马上运行。但是,现在如果我使用collect()方法执行操作,我会假设数据现在实际上已由Spark从数据池读取并加载到RAM或磁盘。首先,我想
RAM
和存储之间的区别
假设我正在从Azure data lake(ADLS Gen 2)读取csv数据,如下所示:
df = spark.read.csv("path to the csv file").collect()
我知道spark中的read
方法是spark中的Transformation
方法。这不会马上运行。但是,现在如果我使用collect()
方法执行操作
,我会假设数据现在实际上已由Spark从数据池读取并加载到RAM
或磁盘
。首先,我想知道,数据存储在哪里。它是在RAM
中还是在Disk
中。而且,如果数据存储在RAM
中,那么cache
用于什么?;如果数据被检索并存储在磁盘上
,那么persist做什么呢?我知道cache
将数据存储在内存中以备以后使用,如果我有大量数据,我可以使用persist
将数据存储到磁盘中
我想知道,如果我们有PB的数据,databricks可以扩展多少
RAM
和Disk
的大小相差多少
我如何知道在任何时间点数据存储在何处
运行Azure Databricks的底层操作系统是什么
请注意,我是Azure Databricks和Spark的新手
我想得到一些关于使用Spark的最佳实践的建议
非常感谢你的帮助
首先,我想知道,数据存储在哪里
当您运行任何操作(即收集或其他)时,数据将从执行器节点收集到驱动程序节点,并存储在ram(内存)中
如果数据存储在RAM中,那么缓存的作用是什么
Spark有lazy求值
这意味着,在你调用一个动作之前,它不会做任何事情,一旦你调用它,它就会创建一个DAG
,然后执行该DAF
让我们通过一个例子来理解它。让我们考虑你有三个表<代码>表A ,<代码>表B 和<代码>表C < /代码>。您已经加入了这个表并应用了一些业务逻辑(映射和过滤器),让我们将此数据框称为filtered\u data
。现在,您在5个不同的位置(另一个数据帧)使用此数据帧,用于查找或连接以及其他业务原因
如果您不持久(缓存)您的filterd_数据
dataframe,那么每次引用它时,它都会再次通过连接和其他业务逻辑。因此,如果要在多个位置使用数据帧,建议持久化(缓存)数据帧
默认情况下,缓存
存储在内存(RAM)中的数据,但您可以将存储级别设置为磁盘
想知道,如果我们有PB的数据,databricks可以扩展多少
这是一个分布式环境,所以您需要做的是添加更多的执行器。可能需要增加内存和CPU配置
我如何知道在任何时间点数据存储在何处
如果尚未创建表或视图,则它将存储在内存中
运行Azure Databricks的底层操作系统是什么
它使用linux
操作系统。
特别是Linux-4.15.0-1050-azure-x86_64-with-Ubuntu-16.04-xenial
您可以运行以下命令来了解
import platform
println(platform.platform())
感谢@Shah的详细回答。关于您的第一个答案,如果我假设在一个数据帧上有10个转换操作,并且如果我为它们中的每一个维护一个引用df1,df2,…,df10
,那么如果我说例如:df11=df6.map(lambda x:x**2)
;然后,我假设所有先前的数据帧df1到df6
都将被再次计算,“在我对df11
执行操作之后”是否正确?第二,我可以将数据保存到工作节点的磁盘中而不是驱动程序
节点上吗?最后,如果我写回云存储,后端会发生什么?工作节点执行写操作,还是驱动节点的工作?我们是否可以将此操作并行化为“写入云存储,即ADLS Gen 2”?如果您能通过编辑您的答案来回答这些问题,我将不胜感激。谢谢@I.A.你明白了。正确的。。所有操作将再次执行。这时您应该使用缓存
或持久化
。缓存数据帧时,它位于ram
上,分布在执行器上。当您保存为表或在磁盘上持久化时,它也是分布式的。我对最后一个问题不是100%确定。不过,我认为遗嘱执行人也会注意书写。