phoenix 5.0 创建二级索引后新增、删除数据报错

折腾了半天:

报错内容:

Error: org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: org.apache.phoenix.hbase.index.builder.IndexBuildingFailureException: Failed to build index for unexpected reason!
	at org.apache.phoenix.hbase.index.util.IndexManagementUtil.rethrowIndexingException(IndexManagementUtil.java:206)
	at org.apache.phoenix.hbase.index.Indexer.preBatchMutate(Indexer.java:351)
	at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$28.call(RegionCoprocessorHost.java:1010)
	at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$28.call(RegionCoprocessorHost.java:1007)
	at org.apache.hadoop.hbase.coprocessor.CoprocessorHost$ObserverOperationWithoutResult.callObserver(CoprocessorHost.java:540)
	at org.apache.hadoop.hbase.coprocessor.CoprocessorHost.execOperation(CoprocessorHost.java:614)
	at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.preBatchMutate(RegionCoprocessorHost.java:1007)
	at org.apache.hadoop.hbase.regionserver.HRegion$MutationBatchOperation.prepareMiniBatchOperations(HRegion.java:3466)
	at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutate(HRegion.java:3875)
	at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:3833)
	at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:3764)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:1027)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicBatchOp(RSRpcServices.java:959)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:922)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:2666)
	at org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:42014)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:409)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:324)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:304)
Caused by: java.lang.VerifyError: org/apache/phoenix/hbase/index/covered/data/IndexMemStore$1
	at org.apache.phoenix.hbase.index.covered.data.IndexMemStore.<init>(IndexMemStore.java:82)
	at org.apache.phoenix.hbase.index.covered.LocalTableState.<init>(LocalTableState.java:57)
	at org.apache.phoenix.hbase.index.covered.NonTxIndexBuilder.getIndexUpdate(NonTxIndexBuilder.java:52)
	at org.apache.phoenix.hbase.index.builder.IndexBuildManager.getIndexUpdate(IndexBuildManager.java:90)
	at org.apache.phoenix.hbase.index.Indexer.preBatchMutateWithExceptions(Indexer.java:503)
	at org.apache.phoenix.hbase.index.Indexer.preBatchMutate(Indexer.java:348)
	... 18 more
: 1 time, servers with issues: hbase,16020,1542002334452 (state=,code=0)

其实呢,这个错误。哎

按顺序执行:

create table test(
  id integer not null primary key,
  name varchar,
  age integer
);

upsert into test values(1,'wjc',18);
upsert into test values(2,'xb',19);

create index idx_test_name on test(name);

upsert into test values(3,'xm',28); -- 这一步报错,只有删除二级索引才正常。

最终是版本兼容性的问题:

目前phoenix5.0 是最新的版本,支持 HBase2.0

前人挖坑,后人填。哈哈哈。

原来项目使用的是:HBase2.0.1 ,请注意 多了个.1

你没看错,Phoenix5.0 不兼容 HBase2.0.1。所以更新索引报错了。

解决方法: 将环境中 HBase2.0.1 ,全部修改为 HBase2.0.0,替换后测试正常!!

猜你喜欢

转载自blog.csdn.net/Cky079/article/details/84036377