我们有一个嵌套的(在多个级别上)json作为parquet模式。该模式用于使用配置单元中的外部表从s3读取parquet。
现在模式已经演变:
我们删除并添加了一些列。
更改了某些列的含义(例如->千克到磅)
更新是在深度嵌套在模式树中的属性上完成的。
我们有哪些选择来支持这种演变?
将所有现有的parquet迁移到新模式(读取旧数据、应用新模式、将其写回新位置、更新配置单元表定义)
使用配置单元视图处理架构更改。
或者任何其他随着模式不断发展而扩展的选项。
添加/删除新列有点简单,只需更新配置单元表定义即可。
我们尝试了一种方法#1(迁移数据)来处理数据子集,并计算了完全迁移的成本。我们正在寻找方法,看看我们是否可以避免这一成本,因为我们一天的数据约为100 GB,我们有3-4年的数据。
创建配置单元视图似乎很复杂,因为我们还必须模拟视图中模式的嵌套,以避免数据扁平化。
模式的一个例子是:
A
|
|-> B
| |
| |-> C
| |-> D
| | |-> E (Say this is changed from KG to POUND)
| | |-> F
| | |-> G (Removed)
| | |-> H (Added)
| | | |-> H1
| | | |-> H2
| |
| |-> I
| | |-> J
| | |-> K
|
|-> L
暂无答案!
目前还没有任何答案,快来回答吧!