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
>