问题标签 [data-lake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
509 浏览

amazon-s3 - AWS Glue 从 RDS 同步数据(需要从所有架构同步 4 个表)到 S3(apache parque 格式)

我们正在使用 Postgres RDS 实例(db.t3.2xlarge 大约 2TB 数据)。我们有一个多租户应用程序,因此对于注册我们产品的所有组织,我们正在创建一个单独的模式来复制我们的数据模型。现在我们的几个模式(大约 5 到 10 个模式)包含几个大表(大约 5 到 7 个大表,每个表包含 10 到 2 亿行)。对于 UI,我们需要显示一些静态数据和图形,并计算这些静态数据和图形数据,我们需要在大表上执行连接,这会减慢整个数据库服务器的速度。有时我们需要在夜间进行此类查询,以免用户遇到任何性能问题。因此,我们计划在 S3 中创建一个数据湖的解决方案,以便我们可以将所有分析负载从 RDBMS 转移到 OLAP 解决方案。

作为第一步,我们需要将数据从 RDS 传输到 S3,并保持同步两个数据源。考虑到以下要求,您能否建议我们选择哪种工具更好:

  1. 我们需要每小时更新最近 3 天的数据。我们希望不断更新最近的数据,因为在 3 天的时间窗口内,它可能会发生变化。3 天后,我们可以认为数据“处于静止状态”,它可以在数据湖中静止,无需任何未来修改。
  2. 我们目前正在使用多租户系统,我们有大约 350 个模式,但随着越来越多的组织注册我们的产品,它将会增加。
  3. 我们计划进行 ETL,因此在转换中,我们计划连接所有表并创建一个非规范化表,并将数据以 apache parque 格式存储在 S3 中。这样我们就可以使用 Redshift Spectrum、EMR 或其他工具对该表执行分析查询。
0 投票
1 回答
1262 浏览

python-3.x - 如何使用 Python SDK 从 Azure 数据湖中删除文件?

我正在为 Python 3.8 使用 azure-storage-file-datalake 插件。SDK 在这里进行了深入的描述 - https://docs.microsoft.com/en-us/python/api/azure-storage-file-datalake/azure.storage.filedatalake.datalakedirectoryclient?view=azure-python,但是在哪里没有关于是否可以从数据湖中删除文件的描述,SDK 只描述了删除目录。是否可以删除文件?

编辑:为了回应给出的答案,我尝试了这个......

但最后一行导致此错误

0 投票
0 回答
89 浏览

amazon-web-services - 无法在 AWS datalake/glue UI 中查看表

显示已创建表的图像。(爬虫快照) 无法在 AWS datalake/glue UI 中的数据库选项卡下查看表,即使爬虫日志指出 - 已创建 2 个表。

2020-09-05T15:16:45.020+05:30 [7bf19dc8-e723-4852-b92f-ccd1ab313849] BENCHMARK:为爬虫 db1 运行开始爬网

2020-09-05T15:17:02.149+05:30 [7bf19dc8-e723-4852-b92f-ccd1ab313849] BENCHMARK:分类完成,将结果写入数据库 db1

2020-09-05T15:17:02.150+05:30 [7bf19dc8-e723-4852-b92f-ccd1ab313849] 信息:使用 SchemaChangePolicy {"UpdateBehavior":"UPDATE_IN_DATABASE","DeleteBehavior":"DEPRECATE_IN_DATABASE"} 配置的爬虫。

2020-09-05T15:17:23.963+05:30 [7bf19dc8-e723-4852-b92f-ccd1ab313849] 信息:在数据库 db1 中创建了表客户

2020-09-05T15:17:23.965+05:30 [7bf19dc8-e723-4852-b92f-ccd1ab313849] 信息:在数据库 db1 中创建表 sales

2020-09-05T15:17:24.674+05:30 [7bf19dc8-e723-4852-b92f-ccd1ab313849] 基准:完成写入目录

2020-09-05T15:18:30.608+05:30 [7bf19dc8-e723-4852-b92f-ccd1ab313849] 基准:爬虫已完成运行并处于就绪状态

该角色由所有管理策略组成。多次尝试刷新,仍然看不到表格。

0 投票
1 回答
838 浏览

apache-spark - Glue Crawler 可以爬取 deltalake 文件以在 aws 胶水目录中创建表吗?

我们有一个现有的基础架构,我们正在通过 aws 爬虫爬取 S3 目录。这些 S3 目录是作为 AWS datalake 的一部分创建的,并通过 spark 作业转储。现在为了实现 delta 功能,我们在 deltalake 上进行了 POC。因此,当我通过 spark-delta Jobs 在 S3 中编写这些 deltalake 文件时,我的爬虫无法从这些爬虫创建表。

我们可以使用 AWS 爬虫来爬取 delta Lake 文件吗?

0 投票
1 回答
1254 浏览

database-design - 带有 Kimball 的星型模式和数据集市的数据湖

客观的

我对术语有点困惑:我已经基于 Kimball 的数据建模方法构建了 Data Lake(不是 DW),现在不确定是否可以使用 Data Mart 定义来命名我的 MPP 数据库层。

我假设您仍然需要中型组织报告的维度建模和星型模式,与本文中的推理相同。

问题

  1. 在以下架构中将Synapse 称为数据集市是否正确(见下图)?
  2. 我可以说我没有 DW(即使我有 Star Schema),而是我有 Data Lake + Data Mart(s)?
  3. 我是否应该根据业务/报告子域(多个数据集市)将 Synapse 拆分为多个模式?

架构细节

在此处输入图像描述

更具体地说,在我的情况下:

2-3) ADLS + Databricks 形成数据湖。所有 ETL 和星型模式构建都发生在数据湖层。所有的逻辑座位在这里。它仍然在原始层具有结构化和非结构化数据,使用廉价的 ADLS 存储,缺乏治理,拥有 ML 并且将来会有流式传输。另一方面,我们在所有 DL 区域中都有 schema-on-write,除了 raw,我们有预先建模的表(在这个过程中有很多需求变化)。我称它为数据湖是否正确?

4.) Synapse 用作 ETL/Lake 结果的微小投影/模型,以加快报告响应时间。这里几乎为零逻辑,很少聚合。只有最终模型加载到 Synapse。数据不按业务子域拆分,我们只是将所有内容加载到单个 DATAMART 模式中。这是一个好方法吗?

0 投票
1 回答
44 浏览

azure - 获取 ADLS 目录和子目录路径,直到它使用 databricks 获取表中的文件格式

我有一个 ADLS,其中有几个文件夹,这些文件夹又具有子文件夹等等,直到我们在其中有 CSV 或 Parquet 数据。

如何使用databricks中的文件格式获取此文件夹中的文件夹名称和子文件夹?还有一些我根本不想考虑的垃圾文件夹,比如 Folder123、Folder_dummy 等。

建议请..

0 投票
0 回答
47 浏览

amazon-web-services - 如何使用 AWS Glue 处理多个表

作为进行数据验证的一部分,我有处理许多表的用例。表的数量几乎是 2000。由于严格的 SLA,现在需要同时处理许多表。由于 Glue 并发限制为 50(通过提出支持票我将其增加到 100。由于 100 是我的 AWS 区域的硬限制,因此它们无法进一步增加)。有没有更好的方法来处理我的数据?

0 投票
2 回答
722 浏览

hive - Dbeaver 不显示来自我们的配置单元实例之一的元数据。怎么修?

我们使用 DBeaver 连接到我们的 hive 数据湖。我发现了一个非常奇怪的行为。我们有一个测试和一个生产数据湖。

在我们的测试数据湖中,它在“项目”选项卡(左列)中正确显示了表元数据。这里是:

元数据正确显示

但是当我转到我们的 hive 生产连接,并单击模式旁边的小箭头时,没有显示元数据:

未显示元数据

最奇怪的是,如果我执行命令show tablesor describe table_name,元数据就会正确显示。所以我拥有显示它的所有权限。

我已经比较了尝试调试此问题时发现的所有配置,但不知道该怎么做。一个数据湖管理员帮助了我,因为我没有它的所有权限。

我们使用 kerberos 和一个 Jdbc 连接到 Hive。

如何让 dbeaver 显示我的元数据?我应该检查什么来尝试解决这个问题?

0 投票
2 回答
119 浏览

data-warehouse - 如何处理数据湖与数据仓库中的历史化数据?

在经典数据仓库中历史化数据是可能的(甚至是核心功能)。随着时间的推移,数据将被添加到数据仓库中,并且可以在数据上及时移动。

如果我只想使用数据湖并为业务用户提供数据历史记录,这可能吗?如果是,可能的方法会是什么样子?

0 投票
1 回答
222 浏览

apache-spark - Delta Lake:我们不再需要时间分区来处理完整的重新处理表了吗

客观的

假设您在 ETL 的帮助下构建数据湖和星型模式。存储格式为 Delta Lake。ETL 的职责之一是构建渐变维度 (SCD) 表(累积状态)。这意味着对于每个 SCD 表,ETL 每天都会读取整个表的状态,应用更新并将它们保存回来(完全覆盖)。

问题

我们团队内部争论的一个问题:我们应该将时间分区添加到 SCD(完全覆盖)表吗?意思是,我应该将最新的(完整)表状态保存到SOME_DIMENSION/还是保存到SOME_DIMENSION/YEAR=2020/MONTH=12/DAY=04/

注意事项

一方面,Delta Lake 具有所有必需的功能:时间旅行和 ACID。当它覆盖整个表时,会发生逻辑删除,您仍然可以查询旧版本并回滚到它们。所以 Delta Lake 几乎为你管理时间分区,代码变得更简单。

另一方面,我说“几乎”是因为恕我直言时间旅行和酸不能覆盖 100% 的用例。它没有到达时间的概念。例如:

示例(当您需要时间分区时)

BA团队报告SOME_FACT/YEAR=2019/MONTH=07/DAY=15数据被破坏(事实必须以时间分区存储,因为数据是按到达时间处理的)。为了在 DEV/TEST 环境中重现问题,您需要 1 个事实表原始输入和 10 个 SCD 表。

有了事实,一切都很简单,因为您在 Data Lake 中有原始输入。但是对于增量状态(SCD 表),事情变得复杂 -如何在SOME_FACT/YEAR=2019/MONTH=07/DAY=15处理的时间点获取 10 个 SCD 表的状态?如何自动执行此操作?

更复杂的是,您的环境可能会出现大量错误修复和历史重新处理。意味着 2019-07 数据可能会在 2020 年的某个地方重新处理。Delta Lake 允许您仅根据处理或版本号进行回滚。所以你实际上不知道你应该使用哪个版本。

另一方面,使用日期分区,您始终可以确定SOME_FACT/YEAR=2019/MONTH=07/DAY=15是在SOME_DIMENSION/YEAR=2019/MONTH=07/DAY=15.