gpt4 book ai didi

apache-spark - 数据 block 中的存储选项

转载 作者:行者123 更新时间:2023-12-03 15:56:09 25 4
gpt4 key购买 nike

我对 databricks 环境比较陌生。我的公司为我设置了一个 databricks 帐户,我在其中从 s3 存储桶中提取数据。我有传统关系数据库的背景,所以理解数据块对我来说有点困难。

我有以下问题:

- mount 只是一个连接(链接到 s3/外部存储),没有在 DBFS 上存储任何东西,还是它实际上将数据存储在 DBFS 上?

-我在某处读到 DBFS 也已挂载?我的理解是 DBFS 是 databricks 存储,我如何才能看到 DBFS 可用的总存储量是多少?

-我们为公司中的不同团队提供不同的集群,我无法访问所有集群,从 s3 导出数据时,我是否必须在我的代码中设置一些东西,以确保我的数据框和表不属于我正在使用的集群的其他用户无法访问我在 databricks 中创建的内容。

- 数据库表存储在哪里?是在 DBFS 上吗?在存储选项方面,除了数据库、DBFS、外部(s3、azure、jdbc/odbc 等)之外,还有其他存储吗?

- 当我们加载表/数据框时,它们是否总是存储在内存中?有没有办法查看内存中文件大小的限制?

谢谢!

最佳答案

好问题!我会尽力为您解答这些问题。

mount 只是一个连接(链接到 s3/外部存储),在 DBFS 上没有存储任何东西,还是它实际上将数据存储在 DBFS 上?我在某处读到 DBFS 也已挂载?我的理解是 DBFS 是 databricks 存储,我怎样才能看到 DBFS 可用的总存储量是多少?

DBFS 是 S3 之上的一个抽象层,让您可以像访问本地文件系统一样访问数据。默认情况下,当您部署 Databricks 时,您会创建一个用于存储并可通过 DBFS 访问的存储桶。挂载到 DBFS 时,实际上是将 S3 存储桶挂载到 DBFS 上的路径。更多详情here .

我们为公司中的不同团队提供不同的集群,我无法访问所有集群,从 s3 导出数据时,我是否必须在我的代码中设置一些内容,以确保我所使用的数据框和表不属于我正在使用的集群的其他用户无法访问在 databricks 中创建。

将 S3 存储桶挂载到 DBFS 上的路径将使您的 Databricks 工作区中的其他人可以使用该数据。如果您想确保没有其他人可以访问数据,则必须采取两个步骤。首先,使用 IAM 角色而不是挂载,并将授予 S3 存储桶访问权限的 IAM 角色附加到您计划使用的集群。其次,限制对集群的访问仅限于可以访问数据的人。通过这种方式,您可以锁定哪些集群可以访问数据,哪些用户可以访问这些集群。

数据库表存储在哪里?是在 DBFS 上吗?在存储选项方面,除了数据库、DBFS、外部(s3、azure、jdbc/odbc 等)之外,还有其他存储吗?

数据库表存储在 DBFS 上,通常在 /FileStore/tables 下小路。阅读更多 here .

当我们加载表/数据帧时,它们是否总是存储在内存中?有没有办法查看内存中文件大小的限制?

这取决于您的查询。如果您的查询是 SELECT count(*) FROM table那么是的,整个表都被加载到内存中。如果您正在过滤,那么 Spark 将尝试提高效率,只读取执行查询所需的表部分。文件大小的限制与集群的大小成正比。 Spark 将在整个集群的内存中对数据进行分区。如果您的内存仍然不足,那么通常是时候增加集群的大小或优化您的查询了。 Databricks 上的自动缩放有助于前者。

谢谢!

别客气!

编辑:
in memory是指RAM,DBFS不做任何处理。要查看可用空间,您必须登录 AWS/Azure 帐户并检查与 Databricks 关联的 S3/ADLS 存储。

如果您通过 Spark API 保存表,它们将位于 FileStore/tables路径也是如此。 UI 利用相同的路径。

集群由驱动节点和工作节点组成。如果需要,您可以为驱动程序使用不同的 EC2 实例。这都是一个系统,该系统就是集群。

Spark 支持对与表关联的 Parquet 文件进行分区。事实上,这是提高查询性能的关键策略。按您通常在查询中使用的谓词进行分区。这与内存中的分区是分开的。

关于apache-spark - 数据 block 中的存储选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57585671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com