Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-4526

PhoenixStorageHandler doesn't work with upper case in phoenix.rowkeys

    Details

    • Type: Bug
    • Status: Patch Available
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:

      Description

      If you write phoenix rowkey in uppercase, you will get the following error.
      The field column name changes from hive to lowercase, but not to the phoenix.rowkeys property.

      CREATE TABLE `PROFILE_PHOENIX_CLONE4` (
      	USER_ID STRING COMMENT 'from deserializer'
      	,MARRIED STRING COMMENT 'from deserializer'
      	,USER_NAME STRING COMMENT 'from deserializer'
      	,BIRTH STRING COMMENT 'from deserializer'
      	,WEIGHT FLOAT COMMENT 'from deserializer'
      	,HEIGHT DOUBLE COMMENT 'from deserializer'
      	,CHILD STRING COMMENT 'from deserializer'
      	,IS_MALE BOOLEAN COMMENT 'from deserializer'
      	,PHONE STRING COMMENT 'from deserializer'
      	,EMAIL STRING COMMENT 'from deserializer'
      	,CREATE_TIME TIMESTAMP COMMENT 'from deserializer'
      ) COMMENT '한글 HBase 테이블'
      STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler' 
      TBLPROPERTIES (
      	"phoenix.table.name"="jackdb_PROFILE_PHOENIX_CLONE4"
      	,"phoenix.zookeeper.quorum"="qa3.nexr.com,qa4.nexr.com,qa5.nexr.com"
      	,"phoenix.rowkeys"="USER_ID,MARRIED"
      	,"phoenix.zookeeper.client.port"="2181"
      	,"phoenix.zookeeper.znode.parent"="/hbase"
      	,"phoenix.column.mapping"="USER_ID:USER_ID,MARRIED:MARRIED,USER_NAME:USER_NAME,BIRTH:BIRTH,WEIGHT:WEIGHT,HEIGHT:HEIGHT,CHILD:CHILD,IS_MALE:IS_MALE,PHONE:PHONE,EMAIL:EMAIL,CREATE_TIME:CREATE_TIME"
      	,"ndap.table.storageType"="PHOENIX"
      	,"phoenix.table.options"="SALT_BUCKETS=10,DATA_BLOCK_ENCODING='DIFF'"
      )
      
      2018-01-04T10:37:50,186 INFO  [HiveServer2-Background-Pool: Thread-10310]: ql.Driver (Driver.java:execute(1735)) - Executing command(queryId=hive_20180104103750_424baf0b-141a-450c-ae78-8f9be8a743a8): CREATE TABLE `jackdb`.`PROFILE_PHOENIX_CLONE4` (
      	USER_ID STRING COMMENT 'from deserializer'
      	,MARRIED STRING COMMENT 'from deserializer'
      	,USER_NAME STRING COMMENT 'from deserializer'
      	,BIRTH STRING COMMENT 'from deserializer'
      	,WEIGHT FLOAT COMMENT 'from deserializer'
      	,HEIGHT DOUBLE COMMENT 'from deserializer'
      	,CHILD STRING COMMENT 'from deserializer'
      	,IS_MALE BOOLEAN COMMENT 'from deserializer'
      	,PHONE STRING COMMENT 'from deserializer'
      	,EMAIL STRING COMMENT 'from deserializer'
      	,CREATE_TIME TIMESTAMP COMMENT 'from deserializer'
      ) COMMENT '한글 HBase 테이블'
      STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler' 
      TBLPROPERTIES (
      	"phoenix.table.name"="jackdb_PROFILE_PHOENIX_CLONE4"
      	,"phoenix.zookeeper.quorum"="qa3.nexr.com,qa4.nexr.com,qa5.nexr.com"
      	,"phoenix.rowkeys"="USER_ID,MARRIED"
      	,"phoenix.zookeeper.client.port"="2181"
      	,"phoenix.zookeeper.znode.parent"="/hbase"
      	,"phoenix.column.mapping"="USER_ID:USER_ID,MARRIED:MARRIED,USER_NAME:USER_NAME,BIRTH:BIRTH,WEIGHT:WEIGHT,HEIGHT:HEIGHT,CHILD:CHILD,IS_MALE:IS_MALE,PHONE:PHONE,EMAIL:EMAIL,CREATE_TIME:CREATE_TIME"
      	,"ndap.table.storageType"="PHOENIX"
      	,"phoenix.table.options"="SALT_BUCKETS=10,DATA_BLOCK_ENCODING='DIFF'"
      )
      
      2018-01-04T10:37:50,189 INFO  [HiveServer2-Background-Pool: Thread-10310]: ql.Driver (Driver.java:launchTask(2181)) - Starting task [Stage-0:DDL] in serial mode
      2018-01-04T10:37:50,224 INFO  [HiveServer2-Background-Pool: Thread-10310]: plan.CreateTableDesc (CreateTableDesc.java:toTable(717)) - Use StorageHandler-supplied org.apache.phoenix.hive.PhoenixSerDe for table PROFILE_PHOENIX_CLONE4
      2018-01-04T10:37:50,225 INFO  [HiveServer2-Background-Pool: Thread-10310]: exec.DDLTask (DDLTask.java:createTable(4324)) - creating table jackdb.PROFILE_PHOENIX_CLONE4 on null
      2018-01-04T10:37:50,294 ERROR [HiveServer2-Background-Pool: Thread-10310]: exec.DDLTask (DDLTask.java:failed(639)) - org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
      	at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:862)
      	at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:867)
      	at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4356)
      	at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:354)
      	at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:199)
      	at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:100)
      	at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2183)
      	at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1839)
      	at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1526)
      	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237)
      	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1232)
      	at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:255)
      	at org.apache.hive.service.cli.operation.SQLOperation.access$800(SQLOperation.java:91)
      	at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork$1.run(SQLOperation.java:348)
      	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:1746)
      	at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork.run(SQLOperation.java:362)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
      	at java.lang.AbstractStringBuilder.deleteCharAt(AbstractStringBuilder.java:824)
      	at java.lang.StringBuilder.deleteCharAt(StringBuilder.java:253)
      	at org.apache.phoenix.hive.PhoenixMetaHook.createTableStatement(PhoenixMetaHook.java:157)
      	at org.apache.phoenix.hive.PhoenixMetaHook.preCreateTable(PhoenixMetaHook.java:75)
      	at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:747)
      	at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:740)
      	at sun.reflect.GeneratedMethodAccessor210.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:173)
      	at com.sun.proxy.$Proxy51.createTable(Unknown Source)
      	at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:852)
      	... 22 more
      
      2018-01-04T10:37:50,295 ERROR [HiveServer2-Background-Pool: Thread-10310]: ql.Driver (SessionState.java:printError(1126)) - FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.StringIndexOutOfBoundsException: String index out of range: -1
      2018-01-04T10:37:50,296 INFO  [HiveServer2-Background-Pool: Thread-10310]: ql.Driver (Driver.java:execute(2050)) - Completed executing command(queryId=hive_20180104103750_424baf0b-141a-450c-ae78-8f9be8a743a8); Time taken: 0.11 seconds
      2018-01-04T10:37:50,298 ERROR [HiveServer2-Background-Pool: Thread-10310]: operation.Operation (SQLOperation.java:run(352)) - Error running hive query: 
      org.apache.hive.service.cli.HiveSQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.StringIndexOutOfBoundsException: String index out of range: -1
      	at org.apache.hive.service.cli.operation.Operation.toSQLException(Operation.java:380) ~[hive-service-2.3.2.jar:2.3.2]
      	at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:257) ~[hive-service-2.3.2.jar:2.3.2]
      	at org.apache.hive.service.cli.operation.SQLOperation.access$800(SQLOperation.java:91) ~[hive-service-2.3.2.jar:2.3.2]
      	at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork$1.run(SQLOperation.java:348) [hive-service-2.3.2.jar:2.3.2]
      	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_151]
      	at javax.security.auth.Subject.doAs(Subject.java:422) [?:1.8.0_151]
      	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1746) [hadoop-common-2.7.4.jar:?]
      	at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork.run(SQLOperation.java:362) [hive-service-2.3.2.jar:2.3.2]
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_151]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_151]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_151]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_151]
      	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
      Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
      	at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:862) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:867) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4356) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:354) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:199) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:100) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2183) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1839) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1526) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1232) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:255) ~[hive-service-2.3.2.jar:2.3.2]
      	... 11 more
      Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
      	at java.lang.AbstractStringBuilder.deleteCharAt(AbstractStringBuilder.java:824) ~[?:1.8.0_151]
      	at java.lang.StringBuilder.deleteCharAt(StringBuilder.java:253) ~[?:1.8.0_151]
      	at org.apache.phoenix.hive.PhoenixMetaHook.createTableStatement(PhoenixMetaHook.java:157) ~[phoenix-4.12.0-HBase-1.2-hive.jar:?]
      	at org.apache.phoenix.hive.PhoenixMetaHook.preCreateTable(PhoenixMetaHook.java:75) ~[phoenix-4.12.0-HBase-1.2-hive.jar:?]
      	at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:747) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:740) ~[hive-exec-2.3.2.jar:2.3.2]
      	at sun.reflect.GeneratedMethodAccessor210.invoke(Unknown Source) ~[?:?]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
      	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
      	at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:173) ~[hive-exec-2.3.2.jar:2.3.2]
      	at com.sun.proxy.$Proxy51.createTable(Unknown Source) ~[?:?]
      	at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:852) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:867) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4356) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:354) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:199) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:100) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2183) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1839) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1526) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1232) ~[hive-exec-2.3.2.jar:2.3.2]
      	at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:255) ~[hive-service-2.3.2.jar:2.3.2]
      	... 11 more
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              prismsoft Choi JaeHwan
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: