【发布时间】:2019-04-18 23:55:20
【问题描述】:
我是 HBase 和 Phoenix 的新手。我在将现有 HBase 表映射到 phoenix 时遇到问题。我的最终意图是我应该能够更新 HBase 表的现有行以及使用 Phoenix SQL 将新行插入其中。 我在 HBASE 中的表看起来像这样(它在列族 CASEDETAILS 下有五列):
CASES
COLUMN FAMILIES DESCRIPTION
{NAME => 'CASEDETAILS', BLOOMFILTER => 'NONE', VERSIONS => '2', IN_MEMORY =>
'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL
=> 'FOREVER',COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE =>
'false', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
当我使用命令在该表上创建视图时
create view CASES( pk VARCHAR PRIMARY KEY,
CASEDETAILS.CASEID VARCHAR,
CASEDETAILS.CREATED VARCHAR,
CASEDETAILS.CREATEDBY VARCHAR,
CASEDETAILS.MBI VARCHAR,
CASEDETAILS.MEMBER VARCHAR);
它有效,我可以使用选择查询从表中获取数据,但我无法更新任何行,也无法插入新行。它给出了一个错误“表是只读的”
但是在上面的 Phoenix 创建命令中,我将“view”替换为“table”,即我试图在 Phoenix 中创建一个同名的表;建表成功但select语句不起作用。
所以我这里有几个问题:
1) 为什么现有 Hbase 表的视图可以工作,而表却不能?
2) 有没有办法使用 Phoenix SQL 接口更新 HBase 表中的现有行?
3) 在 Phoenix 中映射现有表时,保持列名顺序和列名大小写的重要性如何?
注意:我已经探索了现有数据库以解决类似问题,并最终意识到我的观点有效但表格无效。但是,没有一个问题能够解决我的最终问题,即通过 Phoenix 更新现有 HBase 表的现有行
【问题讨论】: