[ 
https://issues.apache.org/jira/browse/HUDI-5302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

jimmyz updated HUDI-5302:
-------------------------
    Description: 
h5. Exception:
{code:java}
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
        at 
org.apache.hudi.index.bucket.BucketIdentifier.lambda$getHashKeysUsingIndexFields$2(BucketIdentifier.java:75)
        at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1321)
        at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
        at 
java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at 
java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
        at 
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at 
java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at 
java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
        at 
org.apache.hudi.index.bucket.BucketIdentifier.getHashKeysUsingIndexFields(BucketIdentifier.java:75)
        at 
org.apache.hudi.index.bucket.BucketIdentifier.getHashKeys(BucketIdentifier.java:69)
        at 
org.apache.hudi.index.bucket.BucketIdentifier.getBucketId(BucketIdentifier.java:47)
        at 
org.apache.hudi.index.bucket.HoodieSimpleBucketIndex$SimpleBucketIndexLocationMapper.getRecordLocation(HoodieSimpleBucketIndex.java:94)
        at 
org.apache.hudi.index.bucket.HoodieBucketIndex$1.computeNext(HoodieBucketIndex.java:83)
        at 
org.apache.hudi.index.bucket.HoodieBucketIndex$1.computeNext(HoodieBucketIndex.java:78)
        at 
org.apache.hudi.client.utils.LazyIterableIterator.next(LazyIterableIterator.java:119)
{code}
h5.  
h5. Reproduce step:

#Create table
{code:java}
create table db.table (
  id int,
  dt string,
  name string,
  price double,
  ts long
) using hudi
 tblproperties (primaryKey = 'id,name',
  hoodie.index.type = 'BUCKET',
  hoodie.bucket.index.hash.field = 'id,name')
 partitioned by (dt)
{code}
#Insert data
{code:java}
insert into db.table values (1, 'a1,1', 10, 1000, "2021-01-05") {code}

  was:
h5. Exception:
{code:java}
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
        at 
org.apache.hudi.index.bucket.BucketIdentifier.lambda$getHashKeysUsingIndexFields$2(BucketIdentifier.java:75)
        at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1321)
        at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
        at 
java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at 
java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
        at 
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at 
java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at 
java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
        at 
org.apache.hudi.index.bucket.BucketIdentifier.getHashKeysUsingIndexFields(BucketIdentifier.java:75)
        at 
org.apache.hudi.index.bucket.BucketIdentifier.getHashKeys(BucketIdentifier.java:69)
        at 
org.apache.hudi.index.bucket.BucketIdentifier.getBucketId(BucketIdentifier.java:47)
        at 
org.apache.hudi.index.bucket.HoodieSimpleBucketIndex$SimpleBucketIndexLocationMapper.getRecordLocation(HoodieSimpleBucketIndex.java:94)
        at 
org.apache.hudi.index.bucket.HoodieBucketIndex$1.computeNext(HoodieBucketIndex.java:83)
        at 
org.apache.hudi.index.bucket.HoodieBucketIndex$1.computeNext(HoodieBucketIndex.java:78)
        at 
org.apache.hudi.client.utils.LazyIterableIterator.next(LazyIterableIterator.java:119)
{code}
h5.  
h5. Reproduce step:
 # Create table
{code:java}
create table db.table (
  id int,
  dt string,
  name string,
  price double,
  ts long
) using hudi
 tblproperties (primaryKey = 'id,name',
  hoodie.index.type = 'BUCKET',
  hoodie.bucket.index.hash.field = 'id,name')
 partitioned by (dt)
{code}

 # Insert data

{code:java}
insert into db.table values (1, 'a1,1', 10, 1000, "2021-01-05") {code}


> Can't insert into table with bucket index type if record key value contains 
> "," 
> --------------------------------------------------------------------------------
>
>                 Key: HUDI-5302
>                 URL: https://issues.apache.org/jira/browse/HUDI-5302
>             Project: Apache Hudi
>          Issue Type: Bug
>          Components: core
>            Reporter: jimmyz
>            Assignee: jimmyz
>            Priority: Minor
>
> h5. Exception:
> {code:java}
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
>       at 
> org.apache.hudi.index.bucket.BucketIdentifier.lambda$getHashKeysUsingIndexFields$2(BucketIdentifier.java:75)
>       at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1321)
>       at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
>       at 
> java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
>       at 
> java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
>       at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
>       at 
> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
>       at 
> java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
>       at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>       at 
> java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
>       at 
> org.apache.hudi.index.bucket.BucketIdentifier.getHashKeysUsingIndexFields(BucketIdentifier.java:75)
>       at 
> org.apache.hudi.index.bucket.BucketIdentifier.getHashKeys(BucketIdentifier.java:69)
>       at 
> org.apache.hudi.index.bucket.BucketIdentifier.getBucketId(BucketIdentifier.java:47)
>       at 
> org.apache.hudi.index.bucket.HoodieSimpleBucketIndex$SimpleBucketIndexLocationMapper.getRecordLocation(HoodieSimpleBucketIndex.java:94)
>       at 
> org.apache.hudi.index.bucket.HoodieBucketIndex$1.computeNext(HoodieBucketIndex.java:83)
>       at 
> org.apache.hudi.index.bucket.HoodieBucketIndex$1.computeNext(HoodieBucketIndex.java:78)
>       at 
> org.apache.hudi.client.utils.LazyIterableIterator.next(LazyIterableIterator.java:119)
> {code}
> h5.  
> h5. Reproduce step:
> #Create table
> {code:java}
> create table db.table (
>   id int,
>   dt string,
>   name string,
>   price double,
>   ts long
> ) using hudi
>  tblproperties (primaryKey = 'id,name',
>   hoodie.index.type = 'BUCKET',
>   hoodie.bucket.index.hash.field = 'id,name')
>  partitioned by (dt)
> {code}
> #Insert data
> {code:java}
> insert into db.table values (1, 'a1,1', 10, 1000, "2021-01-05") {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to