2016-10-11 37 views
0

我不能後,在鳳凰運行該命令在Apache的鳳凰創建視圖:錯誤505

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

我已經在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) 

這些是下部分

0123顯示在 https://phoenix.apache.org/faq.html命令

如何將Phoenix表映射到現有的HBase表?

+0

你使用哪個版本的鳳凰? –

回答

0

而不是創建一個VIEW你需要創建TABLE現有HBase的表像下面的:

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

有關詳細信息,您可以檢查this

0

你想映射鳳凰表到現有的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的表鳳觀點:

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

的「PK」列聲明你的行鍵是一個VARCHAR(即字符串),而「f1」.val列聲明您的HBase表將包含具有列系列和列限定符「f1」的VALVAL:VAL並且它們的值將是VARCHA