数据湖 - S3 和 Databricks

Data Lakes - S3 and Databricks

我了解 S3 中的数据湖区域,我正在考虑建立 3 个区域 - LANDING、STAGING、CURATED。如果我在 Azure 环境中,我会创建数据湖并将多个文件夹作为不同的区域。

我如何在 AWS 中做同样的事情 - 它是每个区域的单独存储桶(s3://landing_data/s3://staging_datas3://curated_data)还是具有多个文件夹的单个存储桶(即 s3://bucket_name/landing/...s3://bucket_name/staging/)。我明白 AWS S3 只不过是容器。

此外,我能否在 Databricks AWS 上安装多个 S3 存储桶?如果有,有参考文档吗?

鉴于我们可以通过多种方式读写 S3,是否有任何 best/recommended 方法?

这个我也看了。 S3 performance Best Pratices

没有单一的解决方案 - 实际实施取决于数据量、consumers/producers 的数量等。您需要考虑 AWS S3 限制,例如:

  • 默认情况下,一个帐户中可能只有 100 个存储桶 - 虽然可以增加,但
  • 您可以在单个存储桶中每个前缀(目录)每秒发出 3,500 PUT/COPY/POST/DELETE 或 5,500 GET/HEAD 个请求(尽管前缀的数量不受限制)

您可以按照 documentation 中所述将每个存储桶或单个文件夹安装到 Databricks 工作区中。但从安全的角度来看,确实不推荐这样做,因为工作区中的每个人都将拥有与用于挂载的角色相同的权限。相反,只需将完整的 S3 URL 与实例配置文件结合使用。