您是以规范化格式将数据存储在 Delta Lake Silver 层中还是派生数据?
Do you store data in the Delta Lake Silver layer in a normalized format or do you derive it?
我目前正在建立一个数据湖,试图遵循 Delta Lake 的原则(以青铜着陆,清理并合并成白银,然后,如果需要,以黄金呈现最终视图)并有一个问题什么应该存储在 Silver 中。
例如,如果 bronze 中的数据来自 REST API 并以 JSON 形式存储,则其格式如下:
- id(整数)
- 姓名(字符串)
- 字段(字符串数组)
示例如下:
{
'id':12345,
'name':'Test',
'fields':['Hello','this','is','a','test']
}
最后我想把它呈现为两个 table。一个是基础 table,看起来像:
TABLE 1
| id | name |
| -------- | -------------- |
| 12345 | Test |
另一个看起来像:
TABLE 2
| id | field_value |
| -------- | -------------- |
| 12345 | Hello |
| 12345 | this |
| 12345 | is |
| 12345 | a |
| 12345 | test |
我的问题是,我是否应该在 Spark 中预处理数据并将 silver 中的数据存储在单独的文件夹中,如下所示:
-- root
---table 1
----file1.parquet
----etc.parquet
---table 2
----file1.parquet
----etc.parquet
或者将其全部存储在一个文件夹下的 silver 中,然后使用 TSQL 和 OPENJSON 等函数导出这两个 table?
感谢您的帮助或见解!
我认为你的问题没有真正的答案,但这里有一个刺 - 基于你的明确例子和这个参考 https://k21academy.com/microsoft-azure/data-engineer/delta-lake/
My question is, should I pre-process the data in Spark and store the
data in silver in separate folders like this: ...
是的,我希望 JSON 需要更多时间来处理。我在当前项目中使用 JSON 作为 RAW,如果它采用那种格式,并且在 REFined Area 中我们根据需要存储数组,而不是 JSON 结构。但这是因为我们使用了基于 Martin Fowler 的分布式数据网格的数据中心方法。我们有一个业务领域,我们根据语义模型对数据建模。
但是对于每一位专家来说,都有一个对立的专家。有些人会说即时执行,例如 SAP Hana ETL on-the-fly.
对于提供给数据科学家进行分析或临时分析的数据集分析,第二种方法很好。数据将位于青铜区。那就是说 gdpr 方面会,可能意味着将它们精炼到银区并删除 gdpr 方面。
简而言之,取决于您的用例。
我目前正在建立一个数据湖,试图遵循 Delta Lake 的原则(以青铜着陆,清理并合并成白银,然后,如果需要,以黄金呈现最终视图)并有一个问题什么应该存储在 Silver 中。
例如,如果 bronze 中的数据来自 REST API 并以 JSON 形式存储,则其格式如下:
- id(整数)
- 姓名(字符串)
- 字段(字符串数组)
示例如下:
{
'id':12345,
'name':'Test',
'fields':['Hello','this','is','a','test']
}
最后我想把它呈现为两个 table。一个是基础 table,看起来像:
TABLE 1
| id | name |
| -------- | -------------- |
| 12345 | Test |
另一个看起来像:
TABLE 2
| id | field_value |
| -------- | -------------- |
| 12345 | Hello |
| 12345 | this |
| 12345 | is |
| 12345 | a |
| 12345 | test |
我的问题是,我是否应该在 Spark 中预处理数据并将 silver 中的数据存储在单独的文件夹中,如下所示:
-- root
---table 1
----file1.parquet
----etc.parquet
---table 2
----file1.parquet
----etc.parquet
或者将其全部存储在一个文件夹下的 silver 中,然后使用 TSQL 和 OPENJSON 等函数导出这两个 table?
感谢您的帮助或见解!
我认为你的问题没有真正的答案,但这里有一个刺 - 基于你的明确例子和这个参考 https://k21academy.com/microsoft-azure/data-engineer/delta-lake/
My question is, should I pre-process the data in Spark and store the data in silver in separate folders like this: ...
是的,我希望 JSON 需要更多时间来处理。我在当前项目中使用 JSON 作为 RAW,如果它采用那种格式,并且在 REFined Area 中我们根据需要存储数组,而不是 JSON 结构。但这是因为我们使用了基于 Martin Fowler 的分布式数据网格的数据中心方法。我们有一个业务领域,我们根据语义模型对数据建模。
但是对于每一位专家来说,都有一个对立的专家。有些人会说即时执行,例如 SAP Hana ETL on-the-fly.
对于提供给数据科学家进行分析或临时分析的数据集分析,第二种方法很好。数据将位于青铜区。那就是说 gdpr 方面会,可能意味着将它们精炼到银区并删除 gdpr 方面。
简而言之,取决于您的用例。