在Apache Phoenix中创建视图:错误505

时间:2016-10-11 10:04:59

标签: phoenix

我无法在phoenix中运行命令

CREATE VIEW "t1" ( pk VARCHAR PRIMARY KEY, "f1".val VARCHAR )

之后我执行了in hbase命令

create 't1', {NAME => 'f1', VERSIONS => 5}

我收到以下错误

org.apache.phoenix.schema.ReadOnlyTableException: ERROR 505 (42000): Table is read only.
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.ensureTableCreated(ConnectionQueryServicesImpl.java:815)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.createTable(ConnectionQueryServicesImpl.java:1174)
    at org.apache.phoenix.schema.MetaDataClient.createTableInternal(MetaDataClient.java:1974)
    at org.apache.phoenix.schema.MetaDataClient.createTable(MetaDataClient.java:770)
    at org.apache.phoenix.compile.CreateTableCompiler$2.execute(CreateTableCompiler.java:186)
    at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:305)
    at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:297)
    at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
    at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:295)
    at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1255)
    at sqlline.Commands.execute(Commands.java:822)
    at sqlline.Commands.sql(Commands.java:732)
    at sqlline.SqlLine.dispatch(SqlLine.java:808)
    at sqlline.SqlLine.begin(SqlLine.java:681)
    at sqlline.SqlLine.start(SqlLine.java:398)
    at sqlline.SqlLine.main(SqlLine.java:292)

这些命令显示在https://phoenix.apache.org/faq.html

部分
  

我如何将Phoenix表映射到现有的HBase表?

2 个答案:

答案 0 :(得分:1)

您想将phoenix表映射到现有的HBase表。但是在问题描述中,您首先创建了Phoenix视图,之后您尝试创建具有相同名称的HBase表。因此,您将获得org.apache.phoenix.schema.ReadOnlyTableException: ERROR 505 (42000): Table is read only.例外。

而不是首先创建HBase表,然后创建映射到现有HBase表的Phoenix视图。

实施例: 创建HBase表:

create 't1', {NAME => 'f1', VERSIONS => 5}

创建指向同一HBase表的phoenix视图:

CREATE VIEW "t1" ( pk VARCHAR PRIMARY KEY, "f1".val VARCHAR )

“pk”列声明您的行键是VARCHAR(即字符串),而“f1”.val列声明您的HBase表将包含具有列族和列限定符“f1”的KeyValues:VAL并且他们的价值将是VARCHA

答案 1 :(得分:0)

您需要为现有的HBase表创建 VIEW ,而不是创建 TABLE ,而不是如下所示:

CREATE TABLE "t1" ( ROWKEY VARCHAR PRIMARY KEY, "f1"."val" VARCHAR )

有关详细信息,请查看this