当前位置: 首页 > 知识库问答 >
问题:

用于Delta表、Delta日志、分区等的Database ricks/Spark存储机制

赖运珧
2023-03-14

我试图理解数据在DataBricks环境中是如何存储和管理的。我对引擎盖下发生的事情有一个相当不错的理解,但在网上看到了一些相互矛盾的信息,因此希望得到一个详细的解释来巩固我的理解。为了提出我的问题,我想总结一下我在Apache Spark开发人员课程中所做的部分练习。

作为练习的一部分,我在Databricks平台上遵循了以下步骤:

  1. 启动我的群集
  2. 将拼花文件读取为DataFrame
  3. 将DataFrame作为Delta表存储在DBFS的用户目录中
  4. 对上一步骤中创建的增量表进行了一些更改
  5. 基于特定列(例如State)对相同的Delta表进行分区,并使用覆盖模式将其保存在DBFS中的同一用户目录中

按照上述步骤操作后,以下是我的DBFS目录的外观:

DBFS增量日志目录

在我用来存储Delta表(上图)的根文件夹中,我有以下类型的文件夹/文件

  1. 增量日志文件夹
  2. 具有“状态”名称的文件夹(步骤5.上一节),每个状态文件夹还包含4个镶木地板文件,我怀疑这些文件是数据集的分区
  3. 四个单独的镶木地板文件,我怀疑它们是我创建此增量表时的文件(在上一节的步骤3中)

基于上述练习,以下是我的问题:

  1. 是我在上面的目录中看到的数据-状态命名文件夹,其中包含分布在我的节点上的分区、拼花文件、增量日志等(我认为答案是肯定的)。
  2. 根文件夹中的四个拼花文件(从我创建增量表时开始,在分区之前)-假设它们分布在我的节点上-它们存储在我的节点的RAM中吗?delta_log文件夹中的数据存储在哪里?如果它跨越我的节点-它是存储在RAM还是磁盘内存中?
  3. 数据(每个状态名称文件夹下的拼花文件/分区-来自上面的屏幕截图)存储在哪里?如果它也分布在我的节点上,它是在内存(RAM)中还是在磁盘上?

我在网上看到的一些答案说,所有的分区都存储在内存(RAM)中。按照这个逻辑,一旦我关闭了我的集群 - 它们应该从内存中删除,对吧?

然而,即使当我关闭集群时,我也可以查看DBFS中的所有数据(与我上面的图片完全相似)。我怀疑一旦集群关闭,RAM就会被清除,因此,我不应该看到RAM中的任何数据。我的理解不正确吗?

如果你能尽可能详细地回答我的问题,我将不胜感激。

共有1个答案

东门玺
2023-03-14

当您将数据写到DBFS时,它被存储在独立于您的集群的某种形式的永久对象存储中。这就是集群关闭后它仍然存在的原因。这是什么样的存储取决于您的Databricks工作区运行的是哪种云。

这是分离计算和存储的主要思想,你的集群是其他地方的计算和存储。当你读入和处理数据时,只有当数据分布在你的节点上进行处理时。一旦你的集群关闭,节点上的所有数据都会消失,除非你已经把它写到某种形式的永久存储中。

 类似资料:
  • 我正在使用Databricks Delta Live表,但是在向上插入一些表时遇到了一些问题。我知道下面的文字很长,但我还是尽可能清晰地描述了我的问题。如果有些部分不清楚,请告诉我。 我有下面的表格和流程: 着陆区(_Z)- 要从着陆区转到原始表,我有以下Pysark代码: 此代码按预期方式工作。我运行它,添加更改。JSON文件到登陆区域,重新运行管道,更新插入正确应用于“raw_table” (

  • 滴滴正式宣布开源基于深度学习的语音和自然语言理解模型训练平台 DELTA,以进一步帮助 AI 开发者创建、部署自然语言处理和语音模型,构建高效的解决方案,助力 NLP 应用更好落地。 DELTA 主要基于 TensorFlow 构建,能同时支持 NLP(自然语言处理)和语音任务及数值型特征的训练,整合了包括文本分类、命名实体识别、自然语言推理、问答、序列到序列文本生成、语音识别、说话人验证、语音情

  • 1)数据库建议使用三层(铜层、银层、金层),但推荐使用哪一层来进行机器学习?为什么?我想他们建议在金层中使用干净的数据。 2)如果我们把这三层的概念抽象出来,我们能不能把青铜层看成数据湖,银层看成数据库,金层看成数据仓库?我的意思是从功能上讲,。 3)Delta架构是一个商业术语,还是Kappa架构的演变,还是Lambda和Kappa架构的新趋势?Delta+Lambda架构与Kappa架构有何区

  • Delta 是 jQuery UI 的另外一个全新的主题。

  • Delta Lake 是一个存储层,为 Apache Spark 和大数据 workloads 提供 ACID 事务能力,其通过写和快照隔离之间的乐观并发控制(optimistic concurrency control),在写入数据期间提供一致性的读取,从而为构建在 HDFS 和云存储上的数据湖(data lakes)带来可靠性。 Delta Lake 还提供内置数据版本控制,以便轻松回滚。 主

  • Delta Reporting 为 CFEngine 提供一个集中式的日志服务。CFEngine 的 promises 和 classes 存放在集中数据库中,可用于高级搜索和报表。