为什么Phoenix在执行UPSERT命令时总是向hbase添加一个额外的列(名为_0)?

时间:2015-12-29 08:41:18

标签: hadoop hbase phoenix

当我在apache phoenix上执行 UPSERT 命令时,我总是看到Phoenix在hbase中添加了一个空值的额外列(名为_0),此列(_0)是自动生成的凤凰,但我不需要它,就像这样:

ROW    COLUMN+CELL                                                                   
abc    column=F:A,timestamp=1451305685300,value=123                                
abc    column=F:_0, timestamp=1451305685300, value=     # I want to avoid generate this row

你能告诉我如何避免这种情况吗?非常感谢你!

2 个答案:

答案 0 :(得分:3)

  

“在创建时,为了提高查询性能,空键值为   添加到任何现有行的第一列系列或默认值   如果没有明确定义列族,则列族。 Upserts还会添加此空键值。这通过设置一个键值列来提高查询性能,我们可以保证始终存在,从而最大限度地减少必须预测并随后返回给客户端的数据量。“

Apache Phoenix Documentation

答案 1 :(得分:0)

关于您的问题是否可以避免:

您可以通过在sql末尾添加以下语句来解决此问题:

   func main() {
    go func(){
        fmt.Println("Break Point 1")
    }()
       fmt.Println("Break Point 2") 
       time.Sleep(100 * time.Second)
       fmt.Println("hello")
}

仅当您用phoenix查询某个表,然后又用另一个不知道该phoenix特定虚拟值的系统访问该表时,才应该这样做。