Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 为什么Phoenix在执行UPSERT命令时总是向hbase添加一个额外的列(名为_0)?_Hadoop_Hbase_Phoenix - Fatal编程技术网

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

Hadoop 为什么Phoenix在执行UPSERT命令时总是向hbase添加一个额外的列(名为_0)?,hadoop,hbase,phoenix,Hadoop,Hbase,Phoenix,当我在apache phoenix上执行UPSERT命令时,我总是看到phoenix在hbase中添加了一个额外的列(名为_0),该列(_0)由phoenix自动生成,但我不需要它,如下所示: ROW COLUMN+CELL abc column=F:A,timestamp=1451305685300,value=123

当我在apache phoenix上执行UPSERT命令时,我总是看到phoenix在hbase中添加了一个额外的列(名为_0),该列(_0)由phoenix自动生成,但我不需要它,如下所示:

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
你能告诉我怎么避免吗?多谢各位

“在创建时,为了提高查询性能,需要使用空键值 添加到任何现有行或默认行的第一列族 如果没有显式定义列族,则列族。Upserts还将添加此空键值。这通过使用键值列来提高查询性能,我们可以保证始终存在该列,从而最大限度地减少必须投影并随后返回给客户端的数据量。”


关于您的问题,如果可以避免:

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

ALTER TABLE "<your-table>" ADD "<your-cf>"."_0" VARCHAR(1);
ALTER TABLE "<your-table>" DROP COLUMN "<your-cf>"."_0";
ALTER TABLE“ADD.”“\u 0”VARCHAR(1);
更改表“删除列”。“0”;

只有当您使用phoenix查询某个表,然后使用另一个不知道phoenix特定伪值的系统访问该表时,才应该执行此操作。

谢谢!我得到了它!但这真的没有办法避免吗?空键值看起来非常零碎和冗余,即使它是为性能而设计的。