phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander Lytchier <AlexanderLytch...@m800.com>
Subject Secondary Indexes - PK may not be null
Date Thu, 25 Jul 2019 03:34:05 GMT
Hello,

Using a portion of exported production data we have attempted to add secondary indexes in
our testing environment. (This question is not related to my previous question in the mailing
list which used a different dataset).

The primary row-key in HBase is a 30-byte binary value: 1 Byte for salting, 8 Bytes - timestamp
(Long), 20 Bytes - hash result of other record fields. + 1 extra byte for unknown issue about
updating schema in future.

Generating the indexes asynchronously we hit the following error:

19/07/17 18:11:07 INFO mapreduce.Job: Task Id : attempt_1562553170901_0491_m_000007_2, Status
: FAILED
Error: java.lang.RuntimeException: java.sql.SQLException: ERROR 218 (23018): Constraint violation.
STATISTICS_HOUR_INDEX.:PK may not be null
        at org.apache.phoenix.mapreduce.index.PhoenixIndexImportMapper.map(PhoenixIndexImportMapper.java:122)
        at org.apache.phoenix.mapreduce.index.PhoenixIndexImportMapper.map(PhoenixIndexImportMapper.java:48)
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.sql.SQLException: ERROR 218 (23018): Constraint violation. STATISTICS_HOUR_INDEX.:PK
may not be null
        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.ConstraintViolationException.<init>(ConstraintViolationException.java:39)
        at org.apache.phoenix.schema.PTableImpl.newKey(PTableImpl.java:618)
        at org.apache.phoenix.compile.UpsertCompiler.setValues(UpsertCompiler.java:137)
        at org.apache.phoenix.compile.UpsertCompiler.access$500(UpsertCompiler.java:106)
        at org.apache.phoenix.compile.UpsertCompiler$3.execute(UpsertCompiler.java:917)
        at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:338)
        at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:326)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:324)
        at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:245)
        at org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:172)
        at org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:177)
        at org.apache.phoenix.mapreduce.index.PhoenixIndexImportMapper.map(PhoenixIndexImportMapper.java:101)
        ... 9 more

Correct me if I’m wrong; my understanding is that :PK (in the index table) would be the
same as the PK from the main table, such that other columns in the original table at that
row can easily be read when querying the index table? However there are no rows in the main
table where PK is null (is it even possible?), therefore it’s very strange that it is telling
us that the :PK is null somewhere. Is my understanding incorrect, or could there be something
else causing this issue?

Phoenix: 4.7.0 (CLABS_PHOENIX)
HBase: 1.2.0-cdh5.7.6

Thanks

Mime
View raw message