实木复合地板架构演变策略

时间:2019-09-19 06:48:22

标签: apache-spark amazon-s3 hive apache-spark-sql parquet

我们有一个嵌套(在多个级别)的json作为实木复合地板架构。该模式用于使用Hive中的外部表从S3读取实木复合地板。

现在,架构已经发展:

  1. 我们已删除并添加了一些列。
  2. 更改了某些列的含义(例如->千克至磅)

更新是在深深嵌套在架构树中的属性上完成的。

我们要支持这种发展有哪些选择?

  1. 将所有现有镶木地板迁移到新架构(读取旧数据,应用新架构,将其写回到新位置,更新配置单元表定义)
  2. 使用Hive视图来处理架构更改。
  3. 或其他随架构而扩展的选项将不断发展。

添加/删除新列很容易,只需更新配置单元表定义即可完成

我们已经尝试了方法#1(迁移数据)来处理一部分数据,并计算了完成迁移所需的成本。我们正在寻找方法来查看是否可以避免这种费用,因为我们一天的数据量约为100 GB,并且我们拥有3-4年的数据。

创建Hive视图似乎很复杂,因为我们还必须在视图中模拟架构的嵌套,以避免数据扁平化。

模式的示例可以是:

A
|
|-> B
|  |
|  |-> C
|  |-> D
|  |   |-> E          (Say this is changed from KG to POUND)
|  |   |-> F          
|  |   |-> G          (Removed)
|  |   |-> H          (Added)
|  |   |   |-> H1
|  |   |   |-> H2
|  |
|  |-> I
|  |   |-> J
|  |   |-> K
|
|-> L

0 个答案:

没有答案