今天我们使用Hive作为我们的数据仓库,主要用于批量/批量数据处理 - hive分析查询/连接等 - ETL管道
最近我们遇到了一个问题,我们试图将基于hive的ETL管道作为服务公开。该问题与hive的固定表模式性质有关。我们遇到的情况是表格架构没有修复,它可能会更改ex:可以添加新列(在架构中的任何位置,不一定在末尾),删除和重命名。
在Hive中,一旦创建了分区,我猜它们无法更改,即我们无法在旧分区中添加新列并仅使用数据填充该列。我们必须使用新架构重新创建分区并在所有列中填充数据。但是,新分区可以有新的模式,并且包含新列的数据(不确定是否可以在模式中的任何位置插入新列?)。尝试从旧分区(未修改)读取新列的值将返回NULL。
我想知道我是否可以在这种情况下使用HBase并解决上述问题? 1.在架构中的任何位置插入新列,删除列,重命名列 2.在新列中回填数据,即旧数据(在旧分区中)仅在新列中填充数据,而不在其他列中重新创建分区/重新填充数据。
据我所知,Hbase是无架构的(无架构),即每个记录/行可以有不同的列数。不确定HBase是否有分区概念?
答案 0 :(得分:0)
您只能在新列中填充数据,而无需在其他列中重新创建分区/重新填充数据
<强>但强>
不幸的是,HBase不支持分区(用Hive术语说话),你可以看到这个discussion。这意味着如果分区日期不是行键的一部分,则每个查询都将执行全表扫描
我希望它有所帮助。