与Hbase的Phoenix Salted Table Rowkey问题

时间:2017-12-14 08:50:46

标签: apache salt phoenix row-key

当我使用phoenix表并直接从hbase插入数据时,我遇到了一个rowkey问题。

以下是该方案:

1-使用salt_buckets = 16

在phoenix上创建一个表

2-数据通过storm hbase bolt插入hbase表中。 hbasebolt直接在hbase中插入数据而不经过phoenix。

问题是当我在phoenix上运行select查询时,凤凰rowkey总是缺少与thehbase rowkey相比的第一个字符

示例:

  • hbase rowkey:1f05d01f-6a17-4d7b-8d97-df32d8856666
  • phoenix rowkey:f05d01f-6a17-4d7b-8d97-df32d8856666

我期待得到回复的人。提前谢谢。

亲切的问候,

1 个答案:

答案 0 :(得分:0)

如果您打算使用Apache Phoenix查询数据,请通过Phoenix API将数据写入该表。

通过Phoenix API将数据写入Phoenix表时,它会执行很多操作,其中包括:

  1. 确保您写入的数据与您要写入的表的模式匹配
  2. 更新所有二级索引
  3. 按照Phoenix期望的方式对列名称进行编码
  4. 更新描述该表中数据的物理分布的统计信息,以供将来进行查询计划

当您通过HBase API将数据直接写入Phoenix表时,将绕过所有这些构造。充其量,通过Phoenix进行的查询将因明显的反序列化错误而失败。最坏的情况是,过时的索引将用于回答查询,该查询会返回错误的结果。