You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@phoenix.apache.org by Martin Pernollet <mp...@octo.com> on 2015/07/01 16:03:56 UTC

Can't UPSERT into a VIEW?

Hi,

I got an existing HBase table, so I mapped to phoenix using a *view*. I can
select, create index, so I am happy.

Now I want to add a row (I assume it is not compulsory to have all column
values defined - would be boring otherwise with numerous columns):

upsert into "table" ("family1"."column1", "family2"."column2") values
("value1", "value2")

says* ERROR 505 (42000): Table is read only. (state=42000, code=505)*

What does it mean? Can we use phoenix to append rows to an existing HBase
table?

Thanks in advance

Martin

Re: Can't UPSERT into a VIEW?

Posted by Martin Pernollet <mp...@octo.com>.
Hi and thanks again James.

It is a small table (100k rows, 1650 cols splitted in 2 column families,
one with 50 cols, the other with 1600 cols). Running on a 5 nodes cluster.

*I don't understand the purpose of computing another rowkey at table
creation**, as the table already contains keys?* Is CREATE TABLE
moving/copying all the col:value of a row into another row with
phoenix-generated row key? When looking at my table row keys after calling
CREATE TABLE, the row keys remain unchanged (a random UUID).

In my case, after a long time (more than 10 minutes) the CREATE TABLE
statement ends with PhoenixIOException "Failed after attemps=35". Stack
says RpcRetryingCaller failed after "Connection refused" on various nodes
(but not all). And it provide no spent time report as usually indicated by
phoenix.
Despite this error, the table is available for queries afterward.

*Is it normal to spent such a long time to map the table? *

Thank you





Le lun. 6 juil. 2015 à 20:08, James Taylor <ja...@apache.org> a
écrit :

> Phoenix inserts an empty key value for existing rows when you do a CREATE
> TABLE on an existing HBase table. If it's a big table, just set your
> timeouts really high so it has time to complete.
> Thanks,
> James
>
> On Mon, Jul 6, 2015 at 7:43 AM, Martin Pernollet <mp...@octo.com>
> wrote:
>
>> Hi,
>>
>> (using phoenix 4.2.2 on HDP 2.2)
>>
>> I would like to map an existing table from phoenix. Once mapped, the
>> table should support addition of new rows.
>>
>> I first started by CREATE VIEW. I can query rows, but I can't insert new
>> rows.
>> I now try *CREATE TABLE*. Unfortunately, the command either *fails with
>> a timeout or hangs "forever"*.
>>
>> *What does phoenix tries to do when calling CREATE TABLE on an existing
>> table, compared to CREATE VIEW?*
>>
>> I see nothing particular in the region server logs (simply INFO/DEBUG) :
>> * RpcServer connection-disconnections
>> * LruBlockCache debug reports
>> * Zookeeper informing on opened regions
>> * PostOpenDeployTasks
>>
>> thanks in advance for your suggestions.
>>
>>
>>
>> Le mer. 1 juil. 2015 à 17:09, Martin Pernollet <mp...@octo.com> a
>> écrit :
>>
>>> I seems
>>> - CREATE TABLE returns the error "Table already exists" if you earlier
>>> created and dropped a view for the HBase table (bug?).
>>> - but one can actually run CREATE TABLE for an existing hbase table
>>> according to the documentation
>>>
>>> I can't be sure for the moment as the CREATE TABLE statement on a
>>> re-generated hbase table fails for another reason (timeout).
>>>
>>>
>>>
>>> Le mer. 1 juil. 2015 à 16:04, Martin Pernollet <mp...@octo.com> a
>>> écrit :
>>>
>>>> Hi,
>>>>
>>>> I got an existing HBase table, so I mapped to phoenix using a *view*.
>>>> I can select, create index, so I am happy.
>>>>
>>>> Now I want to add a row (I assume it is not compulsory to have all
>>>> column values defined - would be boring otherwise with numerous columns):
>>>>
>>>> upsert into "table" ("family1"."column1", "family2"."column2") values
>>>> ("value1", "value2")
>>>>
>>>> says* ERROR 505 (42000): Table is read only. (state=42000, code=505)*
>>>>
>>>> What does it mean? Can we use phoenix to append rows to an existing
>>>> HBase table?
>>>>
>>>> Thanks in advance
>>>>
>>>> Martin
>>>>
>>>
>

Re: Can't UPSERT into a VIEW?

Posted by James Taylor <ja...@apache.org>.
Phoenix inserts an empty key value for existing rows when you do a CREATE
TABLE on an existing HBase table. If it's a big table, just set your
timeouts really high so it has time to complete.
Thanks,
James

On Mon, Jul 6, 2015 at 7:43 AM, Martin Pernollet <mp...@octo.com>
wrote:

> Hi,
>
> (using phoenix 4.2.2 on HDP 2.2)
>
> I would like to map an existing table from phoenix. Once mapped, the table
> should support addition of new rows.
>
> I first started by CREATE VIEW. I can query rows, but I can't insert new
> rows.
> I now try *CREATE TABLE*. Unfortunately, the command either *fails with a
> timeout or hangs "forever"*.
>
> *What does phoenix tries to do when calling CREATE TABLE on an existing
> table, compared to CREATE VIEW?*
>
> I see nothing particular in the region server logs (simply INFO/DEBUG) :
> * RpcServer connection-disconnections
> * LruBlockCache debug reports
> * Zookeeper informing on opened regions
> * PostOpenDeployTasks
>
> thanks in advance for your suggestions.
>
>
>
> Le mer. 1 juil. 2015 à 17:09, Martin Pernollet <mp...@octo.com> a
> écrit :
>
>> I seems
>> - CREATE TABLE returns the error "Table already exists" if you earlier
>> created and dropped a view for the HBase table (bug?).
>> - but one can actually run CREATE TABLE for an existing hbase table
>> according to the documentation
>>
>> I can't be sure for the moment as the CREATE TABLE statement on a
>> re-generated hbase table fails for another reason (timeout).
>>
>>
>>
>> Le mer. 1 juil. 2015 à 16:04, Martin Pernollet <mp...@octo.com> a
>> écrit :
>>
>>> Hi,
>>>
>>> I got an existing HBase table, so I mapped to phoenix using a *view*. I
>>> can select, create index, so I am happy.
>>>
>>> Now I want to add a row (I assume it is not compulsory to have all
>>> column values defined - would be boring otherwise with numerous columns):
>>>
>>> upsert into "table" ("family1"."column1", "family2"."column2") values
>>> ("value1", "value2")
>>>
>>> says* ERROR 505 (42000): Table is read only. (state=42000, code=505)*
>>>
>>> What does it mean? Can we use phoenix to append rows to an existing
>>> HBase table?
>>>
>>> Thanks in advance
>>>
>>> Martin
>>>
>>

Re: Can't UPSERT into a VIEW?

Posted by Martin Pernollet <mp...@octo.com>.
Hi,

(using phoenix 4.2.2 on HDP 2.2)

I would like to map an existing table from phoenix. Once mapped, the table
should support addition of new rows.

I first started by CREATE VIEW. I can query rows, but I can't insert new
rows.
I now try *CREATE TABLE*. Unfortunately, the command either *fails with a
timeout or hangs "forever"*.

*What does phoenix tries to do when calling CREATE TABLE on an existing
table, compared to CREATE VIEW?*

I see nothing particular in the region server logs (simply INFO/DEBUG) :
* RpcServer connection-disconnections
* LruBlockCache debug reports
* Zookeeper informing on opened regions
* PostOpenDeployTasks

thanks in advance for your suggestions.



Le mer. 1 juil. 2015 à 17:09, Martin Pernollet <mp...@octo.com> a
écrit :

> I seems
> - CREATE TABLE returns the error "Table already exists" if you earlier
> created and dropped a view for the HBase table (bug?).
> - but one can actually run CREATE TABLE for an existing hbase table
> according to the documentation
>
> I can't be sure for the moment as the CREATE TABLE statement on a
> re-generated hbase table fails for another reason (timeout).
>
>
>
> Le mer. 1 juil. 2015 à 16:04, Martin Pernollet <mp...@octo.com> a
> écrit :
>
>> Hi,
>>
>> I got an existing HBase table, so I mapped to phoenix using a *view*. I
>> can select, create index, so I am happy.
>>
>> Now I want to add a row (I assume it is not compulsory to have all column
>> values defined - would be boring otherwise with numerous columns):
>>
>> upsert into "table" ("family1"."column1", "family2"."column2") values
>> ("value1", "value2")
>>
>> says* ERROR 505 (42000): Table is read only. (state=42000, code=505)*
>>
>> What does it mean? Can we use phoenix to append rows to an existing HBase
>> table?
>>
>> Thanks in advance
>>
>> Martin
>>
>

Re: Can't UPSERT into a VIEW?

Posted by Martin Pernollet <mp...@octo.com>.
I seems
- CREATE TABLE returns the error "Table already exists" if you earlier
created and dropped a view for the HBase table (bug?).
- but one can actually run CREATE TABLE for an existing hbase table
according to the documentation

I can't be sure for the moment as the CREATE TABLE statement on a
re-generated hbase table fails for another reason (timeout).



Le mer. 1 juil. 2015 à 16:04, Martin Pernollet <mp...@octo.com> a
écrit :

> Hi,
>
> I got an existing HBase table, so I mapped to phoenix using a *view*. I
> can select, create index, so I am happy.
>
> Now I want to add a row (I assume it is not compulsory to have all column
> values defined - would be boring otherwise with numerous columns):
>
> upsert into "table" ("family1"."column1", "family2"."column2") values
> ("value1", "value2")
>
> says* ERROR 505 (42000): Table is read only. (state=42000, code=505)*
>
> What does it mean? Can we use phoenix to append rows to an existing HBase
> table?
>
> Thanks in advance
>
> Martin
>