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....@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 <grkmc...@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