问题描述
我想使用Phoenix服务从hbase中选择行。我收到以下错误: 错误:错误1036(42J04):如果父级的最后一个PK列的长度可变,则无法修改VIEW的主键。 columnName = tbl1.pk(状态= 42J04,代码= 1036)
我使用了以下来源的参考: https://godbolt.org/ https://phoenix.apache.org/faq.html#How_I_map_Phoenix_table_to_an_existing_HBase_table
我做了什么:
hbase> describe 'tbl1'
tbl1,{TABLE_ATTRIBUTES => {coprocessor $ 1 =>'| org.apache.phoenix.coprocessor.ScanRegionObserver | 805306366 |',cop
rocessor $ 2 =>'| org.apache.phoenix.coprocessor.UngroupedAggregateRegionObserver | 805306366 |',coprocessor $ 3 =>'| org.apac
he.phoenix.coprocessor.GroupedAggregateRegionObserver | 805306366 |',协处理器$ 4 =>'| org.apache.phoenix.coprocessor.Ser
verCachingEndpointImpl | 805306366 |'}
列系列说明
{NAME =>'C',VERSIONS =>'1',evict_BLOCKS_ON_CLOSE =>'false',NEW_VERSION_BEHAVIOR =>'false',KEEP_DELETED_CELLS =>
'FALSE',CACHE_DATA_ON_WRITE =>'false',DATA_BLOCK_ENCODING =>'NONE',TTL =>'8035200 SECONDS(93 DAYS)',MIN_VERSIONS
=>'0',REPLICATION_ScopE =>'0',BLOOMFILTER =>'ROW',CACHE_INDEX_ON_WRITE =>'false',IN_MEMORY =>'false',CACHE_BL
OOMS_ON_WRITE =>'false',PREFETCH_BLOCKS_ON_OPEN =>'false',COMPRESSION =>'GZ',BLOCKCACHE =>'true',BLOCKSIZE =>'6
5536'}
hbase> scan 'tbl1',{LIMIT=>2}
00123 | 9223370438236964192 | 376f38c6-e92a-11ea-9c9b-0242ac130002列= C:t,时间戳= 1598617869297,值= \ x00 \ x00
00337 | 9223370438236964198 | 376e38c6-e92a-11ea-9c9b-0242ac130002列= C:s,时间戳= 1598617869297,值= 123 ctx_userid =“ abc” ctx_id =“ 12345”
phoenix>create table "tbl1" ( "pk" VARCHAR PRIMARY KEY,"C"."s" VARCHAR,"C"."t" VARCHAR);
phoenix>create view "CanonicalId_view_s" ( "pk" VARCHAR PRIMARY KEY,"C"."t" VARCHAR) as select * from "CanonicalId";
我收到以下错误:
java.sql.sqlException: ERROR 1036 (42J04): Cannot modify the primary key of a VIEW if last PK column of parent is variable length. columnName=tbl1.pk
at org.apache.phoenix.exception.sqlExceptionCode$Factory$1.newException(sqlExceptionCode.java:497)
at org.apache.phoenix.exception.sqlExceptionInfo.buildException(sqlExceptionInfo.java:150)
at org.apache.phoenix.schema.MetaDataClient.throwIfLastPKOfParentIsFixedLength(MetaDataClient.java:4037)
at org.apache.phoenix.schema.MetaDataClient.createTableInternal(MetaDataClient.java:2410)
at org.apache.phoenix.schema.MetaDataClient.createTable(MetaDataClient.java:1114)
at org.apache.phoenix.compile.CreateTableCompiler$1.execute(CreateTableCompiler.java:198)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:408)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:391)
at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:390)
at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:378)
at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1825)
at sqlline.Commands.execute(Commands.java:822)
at sqlline.Commands.sql(Commands.java:732)
at sqlline.sqlLine.dispatch(sqlLine.java:813)
at sqlline.sqlLine.begin(sqlLine.java:686)
at sqlline.sqlLine.start(sqlLine.java:398)
at sqlline.sqlLine.main(sqlLine.java:291)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)