You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by Anupriya Chandran <an...@gmail.com> on 2016/08/05 15:05:38 UTC

Apache Phoenix 4.7 -Issue with double datatype

I am using IBM BigInsights Hadoop distribution(Version 4.1) having Hbase
version 1.1.1.
My Apache phoenix version is 4.7. I am facing an issue as described below:

I created a Hbase table as below inserted few rows :

create 'emp' , 'cf'

put 'emp' , '1' , 'cf:age' ,'21'
put 'emp' , '2' , 'cf:age' ,'28'
put 'emp' , '1' , 'cf:bmi' ,'21.2'
put 'emp' , '2' , 'cf:bmi' ,'19.9'

Then I created a table in Phoenix

create table "emp" (pk varchar primary key,"cf"."age" varchar , "cf"."bmi"
DOUBLE);

but querying the table results in below error. If i change DOUBLE data type
to any other datatype ,it works fine. But I need double.


select * from "emp";
Error: ERROR 201 (22000): Illegal data. Expected length of at least 8
bytes, but had 4 (state=22000,code=201)
java.sql.SQLException: ERROR 201 (22000): Illegal data. Expected length of
at least 8 bytes, but had 4
        at
org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:422)
        at
org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145)
        at
org.apache.phoenix.schema.KeyValueSchema.next(KeyValueSchema.java:211)
        at
org.apache.phoenix.expression.ProjectedColumnExpression.evaluate(ProjectedColumnExpression.java:115)
        at
org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:69)
        at
org.apache.phoenix.jdbc.PhoenixResultSet.getObject(PhoenixResultSet.java:524)
        at sqlline.Rows$Row.<init>(Rows.java:157)
        at sqlline.BufferedRows.<init>(BufferedRows.java:38)
        at sqlline.SqlLine.print(SqlLine.java:1650)
        at sqlline.Commands.execute(Commands.java:833)
        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)

Please have a look and help me.

Many thanks in advance.

Anupriya

Re: Apache Phoenix 4.7 -Issue with double datatype

Posted by Thomas D'Silva <td...@salesforce.com>.
Try using UNSIGNED DOUBLE (see
http://phoenix.apache.org/language/datatypes.html). "The purpose of this
type is to map to existing HBase data that was serialized using this
HBase utility
method. "

On Fri, Aug 5, 2016 at 10:07 AM, Tongzhou Wang (Simon) <
tongzhou.wang.1994@gmail.com> wrote:

> Phoenix has a different serialization method than HBase for numericals.
>
> > On Aug 5, 2016, at 08:16, Anupriya Chandran <an...@gmail.com>
> wrote:
> >
> > Also when I tried integer and decimal, it returns some strange values
> which
> > was not at all related to the hbase insertions.
> >
> > create table "emp" (pk varchar primary key,"cf"."age" varchar ,
> "cf"."bmi"
> > integer);
> > select * from "emp";
> > +-----+------+--------------+
> > | PK  | age  |     bmi      |
> > +-----+------+--------------+
> > | 1   | 21   | -1305399758  |
> > | 2   | 28   | null         |
> > +-----+------+--------------+
> >
> >
> > create table "emp" (pk varchar primary key,"cf"."age" varchar ,
> "cf"."bmi"
> > DECIMAL);
> > select * from "emp";
> > +-----+------+---------------+
> > | PK  | age  |      bmi      |
> > +-----+------+---------------+
> > | 1   | 21   | -5.25551E+25  |
> > | 2   | 28   | null          |
> > +-----+------+---------------+
> >
> >
> >
> > On Fri, Aug 5, 2016 at 5:05 PM, Anupriya Chandran <anupriya231@gmail.com
> >
> > wrote:
> >
> >> I am using IBM BigInsights Hadoop distribution(Version 4.1) having Hbase
> >> version 1.1.1.
> >> My Apache phoenix version is 4.7. I am facing an issue as described
> below:
> >>
> >> I created a Hbase table as below inserted few rows :
> >>
> >> create 'emp' , 'cf'
> >>
> >> put 'emp' , '1' , 'cf:age' ,'21'
> >> put 'emp' , '2' , 'cf:age' ,'28'
> >> put 'emp' , '1' , 'cf:bmi' ,'21.2'
> >> put 'emp' , '2' , 'cf:bmi' ,'19.9'
> >>
> >> Then I created a table in Phoenix
> >>
> >> create table "emp" (pk varchar primary key,"cf"."age" varchar ,
> "cf"."bmi"
> >> DOUBLE);
> >>
> >> but querying the table results in below error. If i change DOUBLE data
> >> type to any other datatype ,it works fine. But I need double.
> >>
> >>
> >> select * from "emp";
> >> Error: ERROR 201 (22000): Illegal data. Expected length of at least 8
> >> bytes, but had 4 (state=22000,code=201)
> >> java.sql.SQLException: ERROR 201 (22000): Illegal data. Expected length
> of
> >> at least 8 bytes, but had 4
> >>        at org.apache.phoenix.exception.SQLExceptionCode$Factory$1.
> >> newException(SQLExceptionCode.java:422)
> >>        at org.apache.phoenix.exception.SQLExceptionInfo.buildException(
> >> SQLExceptionInfo.java:145)
> >>        at org.apache.phoenix.schema.KeyValueSchema.next(
> >> KeyValueSchema.java:211)
> >>        at org.apache.phoenix.expression.ProjectedColumnExpression.
> >> evaluate(ProjectedColumnExpression.java:115)
> >>        at org.apache.phoenix.compile.ExpressionProjector.getValue(
> >> ExpressionProjector.java:69)
> >>        at org.apache.phoenix.jdbc.PhoenixResultSet.getObject(
> >> PhoenixResultSet.java:524)
> >>        at sqlline.Rows$Row.<init>(Rows.java:157)
> >>        at sqlline.BufferedRows.<init>(BufferedRows.java:38)
> >>        at sqlline.SqlLine.print(SqlLine.java:1650)
> >>        at sqlline.Commands.execute(Commands.java:833)
> >>        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)
> >>
> >> Please have a look and help me.
> >>
> >> Many thanks in advance.
> >>
> >> Anupriya
> >>
>

Re: Apache Phoenix 4.7 -Issue with double datatype

Posted by "Tongzhou Wang (Simon)" <to...@gmail.com>.
Phoenix has a different serialization method than HBase for numericals. 

> On Aug 5, 2016, at 08:16, Anupriya Chandran <an...@gmail.com> wrote:
> 
> Also when I tried integer and decimal, it returns some strange values which
> was not at all related to the hbase insertions.
> 
> create table "emp" (pk varchar primary key,"cf"."age" varchar , "cf"."bmi"
> integer);
> select * from "emp";
> +-----+------+--------------+
> | PK  | age  |     bmi      |
> +-----+------+--------------+
> | 1   | 21   | -1305399758  |
> | 2   | 28   | null         |
> +-----+------+--------------+
> 
> 
> create table "emp" (pk varchar primary key,"cf"."age" varchar , "cf"."bmi"
> DECIMAL);
> select * from "emp";
> +-----+------+---------------+
> | PK  | age  |      bmi      |
> +-----+------+---------------+
> | 1   | 21   | -5.25551E+25  |
> | 2   | 28   | null          |
> +-----+------+---------------+
> 
> 
> 
> On Fri, Aug 5, 2016 at 5:05 PM, Anupriya Chandran <an...@gmail.com>
> wrote:
> 
>> I am using IBM BigInsights Hadoop distribution(Version 4.1) having Hbase
>> version 1.1.1.
>> My Apache phoenix version is 4.7. I am facing an issue as described below:
>> 
>> I created a Hbase table as below inserted few rows :
>> 
>> create 'emp' , 'cf'
>> 
>> put 'emp' , '1' , 'cf:age' ,'21'
>> put 'emp' , '2' , 'cf:age' ,'28'
>> put 'emp' , '1' , 'cf:bmi' ,'21.2'
>> put 'emp' , '2' , 'cf:bmi' ,'19.9'
>> 
>> Then I created a table in Phoenix
>> 
>> create table "emp" (pk varchar primary key,"cf"."age" varchar , "cf"."bmi"
>> DOUBLE);
>> 
>> but querying the table results in below error. If i change DOUBLE data
>> type to any other datatype ,it works fine. But I need double.
>> 
>> 
>> select * from "emp";
>> Error: ERROR 201 (22000): Illegal data. Expected length of at least 8
>> bytes, but had 4 (state=22000,code=201)
>> java.sql.SQLException: ERROR 201 (22000): Illegal data. Expected length of
>> at least 8 bytes, but had 4
>>        at org.apache.phoenix.exception.SQLExceptionCode$Factory$1.
>> newException(SQLExceptionCode.java:422)
>>        at org.apache.phoenix.exception.SQLExceptionInfo.buildException(
>> SQLExceptionInfo.java:145)
>>        at org.apache.phoenix.schema.KeyValueSchema.next(
>> KeyValueSchema.java:211)
>>        at org.apache.phoenix.expression.ProjectedColumnExpression.
>> evaluate(ProjectedColumnExpression.java:115)
>>        at org.apache.phoenix.compile.ExpressionProjector.getValue(
>> ExpressionProjector.java:69)
>>        at org.apache.phoenix.jdbc.PhoenixResultSet.getObject(
>> PhoenixResultSet.java:524)
>>        at sqlline.Rows$Row.<init>(Rows.java:157)
>>        at sqlline.BufferedRows.<init>(BufferedRows.java:38)
>>        at sqlline.SqlLine.print(SqlLine.java:1650)
>>        at sqlline.Commands.execute(Commands.java:833)
>>        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)
>> 
>> Please have a look and help me.
>> 
>> Many thanks in advance.
>> 
>> Anupriya
>> 

Re: Apache Phoenix 4.7 -Issue with double datatype

Posted by Anupriya Chandran <an...@gmail.com>.
Also when I tried integer and decimal, it returns some strange values which
was not at all related to the hbase insertions.

create table "emp" (pk varchar primary key,"cf"."age" varchar , "cf"."bmi"
integer);
select * from "emp";
+-----+------+--------------+
| PK  | age  |     bmi      |
+-----+------+--------------+
| 1   | 21   | -1305399758  |
| 2   | 28   | null         |
+-----+------+--------------+


create table "emp" (pk varchar primary key,"cf"."age" varchar , "cf"."bmi"
DECIMAL);
 select * from "emp";
+-----+------+---------------+
| PK  | age  |      bmi      |
+-----+------+---------------+
| 1   | 21   | -5.25551E+25  |
| 2   | 28   | null          |
+-----+------+---------------+



On Fri, Aug 5, 2016 at 5:05 PM, Anupriya Chandran <an...@gmail.com>
wrote:

> I am using IBM BigInsights Hadoop distribution(Version 4.1) having Hbase
> version 1.1.1.
> My Apache phoenix version is 4.7. I am facing an issue as described below:
>
> I created a Hbase table as below inserted few rows :
>
> create 'emp' , 'cf'
>
> put 'emp' , '1' , 'cf:age' ,'21'
> put 'emp' , '2' , 'cf:age' ,'28'
> put 'emp' , '1' , 'cf:bmi' ,'21.2'
> put 'emp' , '2' , 'cf:bmi' ,'19.9'
>
> Then I created a table in Phoenix
>
> create table "emp" (pk varchar primary key,"cf"."age" varchar , "cf"."bmi"
> DOUBLE);
>
> but querying the table results in below error. If i change DOUBLE data
> type to any other datatype ,it works fine. But I need double.
>
>
> select * from "emp";
> Error: ERROR 201 (22000): Illegal data. Expected length of at least 8
> bytes, but had 4 (state=22000,code=201)
> java.sql.SQLException: ERROR 201 (22000): Illegal data. Expected length of
> at least 8 bytes, but had 4
>         at org.apache.phoenix.exception.SQLExceptionCode$Factory$1.
> newException(SQLExceptionCode.java:422)
>         at org.apache.phoenix.exception.SQLExceptionInfo.buildException(
> SQLExceptionInfo.java:145)
>         at org.apache.phoenix.schema.KeyValueSchema.next(
> KeyValueSchema.java:211)
>         at org.apache.phoenix.expression.ProjectedColumnExpression.
> evaluate(ProjectedColumnExpression.java:115)
>         at org.apache.phoenix.compile.ExpressionProjector.getValue(
> ExpressionProjector.java:69)
>         at org.apache.phoenix.jdbc.PhoenixResultSet.getObject(
> PhoenixResultSet.java:524)
>         at sqlline.Rows$Row.<init>(Rows.java:157)
>         at sqlline.BufferedRows.<init>(BufferedRows.java:38)
>         at sqlline.SqlLine.print(SqlLine.java:1650)
>         at sqlline.Commands.execute(Commands.java:833)
>         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)
>
> Please have a look and help me.
>
> Many thanks in advance.
>
> Anupriya
>