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

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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Patch Available
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    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

        1. PHOENIX-4526.patch
          1.0 kB
          Choi JaeHwan

        Activity

          People

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

            Dates

              Created:
              Updated: