azure - Spark 将检索到的数据保存在 Azure Databricks 上的什么位置?

标签 azure apache-spark azure-databricks

我想了解 Azure databricks 中的 RAM存储 之间的区别。

假设我正在从 Azure 数据湖(ADLS Gen 2)读取 csv 数据,如下所示:

df = spark.read.csv("path to the csv file").collect()
  1. 我知道spark中的read方法是spark中的Transformation方法。这不会立即运行。但是,现在如果我使用 collect() 方法执行 Action,我会假设数据现在实际上已由 Spark 从数据湖读取并加载到RAM磁盘。首先,我想知道,数据存储在哪里。它位于RAM 中还是磁盘 中。而且,如果数据存储在RAM中,那么cache是用来做什么的?如果数据被检索并存储在磁盘上,那么 persist 会做什么?我知道 cache 将数据存储在内存中以供以后使用,如果我有大量数据,我可以使用 persist 将数据存储到 磁盘

  2. 我想知道,如果我们有 peta 字节的数据,databricks 可以扩展多少?

  3. RAM磁盘 的大小相差多少?
  4. 我如何知道数据在任何时间点的存储位置?
  5. 运行 Azure Databricks 的底层操作系统是什么?

请注意,我是 Azure Databricks 和 Spark 的新手。

我想获得一些有关使用 Spark 时的最佳实践的建议。

非常感谢您的帮助!!

最佳答案

First, I would like to know, where is the data stored.

当您运行任何操作(即收集或其他)时,数据将从执行器节点收集到驱动程序节点并存储在 ram(内存)中

And, if the data is stored in RAM, then what is cache used for

Spark 具有惰性求值,这意味着在您调用某个操作之前它不会执行任何操作,一旦您调用它,它就会创建一个 DAG,然后执行该 DAF。

让我们通过一个例子来理解它。假设您有三个表:Table ATable BTable C。您已加入此表并应用了一些业务逻辑(映射和过滤器),我们将此数据框称为 filtered_data。现在,您正在 5 个不同的位置(另一个数据帧)中使用此 DataFrame 来进行查找或连接以及其他业务原因。

如果您不持久(缓存)您的 filterd_data 数据帧,则每次引用它时,它将再次经历连接和其他业务逻辑。因此,如果您打算在多个地方使用数据帧,建议保留(缓存)数据帧。

默认情况下,缓存在内存 (RAM) 中存储的数据,但您可以将存储级别设置为磁盘

would like to know, how much can databricks scale if we have petabytes of data?

这是一个分布式环境,所以你需要做的是添加更多的执行器。并且可能需要增加内存和CPU配置,

how can I know where the data is stored at any point in time?

如果您尚未创建表或 View ,它将存储在内存中。

What is the underlying operating system running Azure Databricks?

它使用linux操作系统。 具体来说Linux-4.15.0-1050-azure-x86_64-with-Ubuntu-16.04-xenial

您可以运行以下命令来了解。

import platform
println(platform.platform())

关于azure - Spark 将检索到的数据保存在 Azure Databricks 上的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58291560/

相关文章:

azure - Azure APIM 中具有不同身份验证要求的多个 API

java - scala 中的 cogroup 两个 RDD

azure 数据 block : exceeding approved Total Regional Cores quota

azure - Databricks SQL 分析

Azure 数据工厂用户参数

azure - 如何监控我的 Azure 角色的网络点击量

azure - 将 Terraform 转换为 ARM

Azure 云服务 - EventProcessor IEventProcessor.ProcessEventsAsync 未命中

apache-spark - Spark Streaming - Spark 流中未收到 Netcat 消息

json - 将 JSON 文件读入 Spark 数据集并从单独的 Map 添加列