今天我们使用 Hive 作为我们的数据仓库,主要用于批量/批量数据处理 - Hive 分析查询/连接等 - ETL 管道
最近我们面临一个问题,我们试图将基于 hive 的 ETL 管道公开为服务。该问题与 hive 的固定表模式性质有关。我们有一种情况,表模式不固定,它可能会改变:可以添加新列(在模式中的任何位置不一定在末尾)、删除和重命名。
在 Hive 中,一旦创建了分区,我想它们就无法更改,即我们不能在旧分区中添加新列并仅用数据填充该列。我们必须使用新模式重新创建分区并在所有列中填充数据。但是,新分区可以有新的架构,并且会包含新列的数据(不确定是否可以在架构中的任何位置插入新列?)。尝试从旧分区(未修改)读取新列的值将返回 NULL。
我想知道我是否可以在这种情况下使用 HBase,它会解决我的上述问题吗?1. 在架构中的任何位置插入新列,删除列,重命名列 2. 在新列中回填数据,即旧数据(在旧分区中)仅在新列中填充数据,而不重新创建分区/重新填充数据其他列。
我知道 Hbase 是无模式(无模式)的,即每条记录/行可以有不同数量的列。不确定 HBase 是否有分区的概念?