phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Radha krishna <grkmc...@gmail.com>
Subject Re: Phoenix Upsert with SELECT behaving strange
Date Wed, 18 May 2016 09:29:21 GMT
Hi,

Thanks for your reply, I will check with the latest phoenix version and
update the result.
And one more observation with the phoenix version 4.4.0 if i mentioned
limit <some value>(big table record count) in the Upsert with select query
its working fine.

like

Sort Merge Join
--------------------
UPSERT INTO Target_Table SELECT /*+ USE_SORT_MERGE_JOIN*/
big.col1,big.col2...(102 columns) FROM BIG_TABLE as big JOIN SMALL_TABLE as
small ON big.col1=small.col1 where big.col2=small.col2 limit
<big_table_record_count>;

Hash Join
------------
UPSERT INTO Target_Table SELECT big.col1,big.col2...(102 columns) FROM
BIG_TABLE as big JOIN SMALL_TABLE as small ON big.col1=small.col1 where
big.col2=small.col2 limit <big_table_record_count>;

I tested with the above statement and it is working fine up to for the
record counts big table 100 million rows and small table 15 million rows
if the small table record count's increased like 20 millions i am getting
the below error


16/05/17 18:02:34 WARN client.HTable: Error calling coprocessor service
org.apache.phoenix.coprocessor.generated.ServerCachingProtos$ServerCachingService
for row \x0D\x00\x00
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java
heap space
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at
org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1763)
        at
org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1719)
        at
org.apache.phoenix.cache.ServerCacheClient$1.call(ServerCacheClient.java:188)
        at
org.apache.phoenix.cache.ServerCacheClient$1.call(ServerCacheClient.java:182)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at
org.apache.phoenix.job.JobManager$InstrumentedJobFutureTask.run(JobManager.java:172)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.OutOfMemoryError: Java heap space


Thanks & Regards
Radha Krishna





On Wed, May 18, 2016 at 12:04 AM, Maryann Xue <maryann.xue@gmail.com> wrote:

> Hi Radha,
>
> Thanks for reporting this issue! Would you mind trying it with latest
> Phoenix version?
>
> Thanks,
> Maryann
>
> On Tue, May 17, 2016 at 8:19 AM, Radha krishna <grkmca95@gmail.com> wrote:
>
>> Hi I am performing some join operation in phoenix console and storing the
>> result into another table but the same query some time showing below error
>> messages and some times it is inserting the result into the table.
>>
>> Error Messages:
>>
>> 1)
>>
>> Error: ERROR 201 (22000): Illegal data. ERROR 201 (22000): Illegal data.
>> Expected length of at least 96 bytes, but had 15 (state=22000,code=201)
>> java.sql.SQLException: ERROR 201 (22000): Illegal data. ERROR 201
>> (22000): Illegal data. Expected length of at least 96 bytes, but had 15
>>         at
>> org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:395)
>>         at
>> org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145)
>>         at
>> org.apache.phoenix.util.ServerUtil.parseRemoteException(ServerUtil.java:131)
>>         at
>> org.apache.phoenix.util.ServerUtil.parseServerExceptionOrNull(ServerUtil.java:115)
>>         at
>> org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:104)
>>         at
>> org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:538)
>>         at
>> org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:510)
>>         at
>> org.apache.phoenix.iterate.RoundRobinResultIterator.getIterators(RoundRobinResultIterator.java:176)
>>         at
>> org.apache.phoenix.iterate.RoundRobinResultIterator.next(RoundRobinResultIterator.java:91)
>>         at
>> org.apache.phoenix.iterate.DelegateResultIterator.next(DelegateResultIterator.java:44)
>>         at
>> org.apache.phoenix.compile.UpsertCompiler$2.execute(UpsertCompiler.java:737)
>>         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)
>>
>>
>> 2)
>> Error: ERROR 201 (22000): Illegal data. ERROR 201 (22000): Illegal data.
>> Expected length of at least 48 bytes, but had 47 (state=22000,code=201)
>> java.sql.SQLException: ERROR 201 (22000): Illegal data. ERROR 201
>> (22000): Illegal data. Expected length of at least 48 bytes, but had 47
>>         at
>> org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:395)
>>         at
>> org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145)
>>         at
>> org.apache.phoenix.util.ServerUtil.parseRemoteException(ServerUtil.java:131)
>>         at
>> org.apache.phoenix.util.ServerUtil.parseServerExceptionOrNull(ServerUtil.java:115)
>>         at
>> org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:104)
>>         at
>> org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:538)
>>         at
>> org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:510)
>>         at
>> org.apache.phoenix.iterate.RoundRobinResultIterator.getIterators(RoundRobinResultIterator.java:176)
>>         at
>> org.apache.phoenix.iterate.RoundRobinResultIterator.next(RoundRobinResultIterator.java:91)
>>         at
>> org.apache.phoenix.iterate.DelegateResultIterator.next(DelegateResultIterator.java:44)
>>         at
>> org.apache.phoenix.compile.UpsertCompiler$2.execute(UpsertCompiler.java:737)
>>         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)
>> 0: jdbc:phoenix:g4t7565.houston.hpecorp.net:2>
>>
>>
>> 3)
>> Error: ERROR 201 (22000): Illegal data. ERROR 201 (22000): Illegal data.
>> Expected length of at least 48 bytes, but had 47 (state=22000,code=201)
>> java.sql.SQLException: ERROR 201 (22000): Illegal data. ERROR 201
>> (22000): Illegal data. Expected length of at least 48 bytes, but had 47
>>         at
>> org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:395)
>>         at
>> org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145)
>>         at
>> org.apache.phoenix.util.ServerUtil.parseRemoteException(ServerUtil.java:131)
>>         at
>> org.apache.phoenix.util.ServerUtil.parseServerExceptionOrNull(ServerUtil.java:115)
>>         at
>> org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:104)
>>         at
>> org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:538)
>>         at
>> org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:510)
>>         at
>> org.apache.phoenix.iterate.RoundRobinResultIterator.getIterators(RoundRobinResultIterator.java:176)
>>         at
>> org.apache.phoenix.iterate.RoundRobinResultIterator.next(RoundRobinResultIterator.java:91)
>>         at
>> org.apache.phoenix.iterate.DelegateResultIterator.next(DelegateResultIterator.java:44)
>>         at
>> org.apache.phoenix.compile.UpsertCompiler$2.execute(UpsertCompiler.java:737)
>>         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)
>>
>>
>> Note : i am performing inner join, the join tables and the storing the
>> result table has the same structure( same column families , same
>> compression , same salt buckets )
>> why it is behaving inconsistently. can any one help in the issue
>>
>> Environment:
>>
>> Ø  Hadoop Distribution : Hortonworks
>>
>> Ø  Spark Version : 1.6
>>
>> Ø  HBASE Version: 1.1.2
>>
>> Ø  Phoenix Version: 4.4.0
>>
>> Join command
>> ============
>>
>> Sort Merge Join
>> --------------------
>> UPSERT INTO Target_Table SELECT /*+ USE_SORT_MERGE_JOIN*/
>> big.col1,big.col2...(102 columns) FROM BIG_TABLE as big JOIN SMALL_TABLE as
>> small ON big.col1=small.col1 where big.col2=small.col2;
>>
>> Hash Join
>> ------------
>> UPSERT INTO Target_Table SELECT big.col1,big.col2...(102 columns) FROM
>> BIG_TABLE as big JOIN SMALL_TABLE as small ON big.col1=small.col1 where
>> big.col2=small.col2;
>>
>>
>>
>> Thanks & Regards
>>    Radha krishna
>>
>>
>>
>


-- 








Thanks & Regards
   Radha krishna

Mime
View raw message