用HBase代替Hive

时间:2017-04-28 08:11:06

标签: hive hbase schemaless

今天我们使用Hive作为我们的数据仓库,主要用于批量/批量数据处理 - hive分析查询/连接等 - ETL管道

最近我们遇到了一个问题,我们试图将基于hive的ETL管道作为服务公开。该问题与hive的固定表模式性质有关。我们遇到的情况是表格架构没有修复,它可能会更改ex:可以添加新列(在架构中的任何位置,不一定在末尾),删除和重命名。

在Hive中,一旦创建了分区,我猜它们无法更改,即我们无法在旧分区中添加新列并仅使用数据填充该列。我们必须使用新架构重新创建分区并在所有列中填充数据。但是,新分区可以有新的模式,并且包含新列的数据(不确定是否可以在模式中的任何位置插入新列?)。尝试从旧分区(未修改)读取新列的值将返回NULL。

我想知道我是否可以在这种情况下使用HBase并解决上述问题? 1.在架构中的任何位置插入新列,删除列,重命名列 2.在新列中回填数据,即旧数据(在旧分区中)仅在新列中填充数据,而不在其他列中重新创建分区/重新填充数据。

据我所知,Hbase是无架构的(无架构),即每个记录/行可以有不同的列数。不确定HBase是否有分区概念?

1 个答案:

答案 0 :(得分:0)

  1. 你是对的HBase是一个半无架构的数据库(列系列仍然是固定的)
  2. 您将能够创建新列
  3. 您只能在新列中填充数据,而无需在其他列中重新创建分区/重新填充数据

    <强>但

  4. 不幸的是,HBase不支持分区(用Hive术语说话),你可以看到这个discussion。这意味着如果分区日期不是行键的一部分,则每个查询都将执行全表扫描

  5. Rename column根本不是简单的操作
  6. 经常更新主要压缩间隔之间的现有记录将增加查询响应时间
  7. 我希望它有所帮助。