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

Chiran Ravani updated HIVE-22769:
---------------------------------
    Summary: Incorrect query results and query failure during split generation 
for compressed text files  (was: Incorrect query results and query failure 
during Split generation for compressed text files)

> Incorrect query results and query failure during split generation for 
> compressed text files
> -------------------------------------------------------------------------------------------
>
>                 Key: HIVE-22769
>                 URL: https://issues.apache.org/jira/browse/HIVE-22769
>             Project: Hive
>          Issue Type: Bug
>          Components: File Formats
>    Affects Versions: 3.0.0, 3.1.0
>            Reporter: Chiran Ravani
>            Priority: Critical
>         Attachments: testcase1.csv.bz2, testcase2.csv.bz2
>
>
> Hive Query produces incorrect results when data is in text format and 
> compressed and for certain data the query fails during split generation.
> This behavior is seen when skip.header.line.count and skip.footer.line.count 
> are set for table.
> Case 1: Select count/aggregate query produces Incorrect row counts/displays 
> all rows (when hive.fetch.task.conversion=none)
> Steps to reproduce:
> 1. Create table as below
> {code}
> CREATE EXTERNAL TABLE `testcase1`(id int, name string) ROW FORMAT SERDE 
> 'org.apache.hadoop.hive.serde2.OpenCSVSerde' LOCATION '/user/hive/testcase1' 
> TBLPROPERTIES ("skip.header.line.count"="1", "skip.footer.line.count"="1");
> {code}
> 2. Upload attached testcase1.csv.bz2 file to /user/hive/testcase1
> 3. Run count(*) on table.
> {code}
> > select * from testcase1;
> INFO  : Compiling 
> command(queryId=hive_20200124053854_454b03c1-d4c5-4dba-a2c2-91c09f4b670f): 
> select * from testcase1
> INFO  : Semantic Analysis Completed (retrial = false)
> INFO  : Returning Hive schema: 
> Schema(fieldSchemas:[FieldSchema(name:testcase1.id, type:string, 
> comment:null), FieldSchema(name:testcase1.name, type:string, comment:null)], 
> properties:null)
> INFO  : Completed compiling 
> command(queryId=hive_20200124053854_454b03c1-d4c5-4dba-a2c2-91c09f4b670f); 
> Time taken: 0.07 seconds
> INFO  : Executing 
> command(queryId=hive_20200124053854_454b03c1-d4c5-4dba-a2c2-91c09f4b670f): 
> select * from testcase1
> INFO  : Completed executing 
> command(queryId=hive_20200124053854_454b03c1-d4c5-4dba-a2c2-91c09f4b670f); 
> Time taken: 0.007 seconds
> INFO  : OK
> +---------------+-----------------+
> | testcase1.id  | testcase1.name  |
> +---------------+-----------------+
> | 2             | 2019-12-31      |
> +---------------+-----------------+
> 1 row selected (0.111 seconds)
> > select count(*) from testcase1
> INFO  : Compiling 
> command(queryId=hive_20200124053645_a7d699b7-c7e1-4d92-8d99-666b0a010ba7): 
> select count(*) from testcase1
> INFO  : Semantic Analysis Completed (retrial = false)
> INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:_c0, 
> type:bigint, comment:null)], properties:null)
> INFO  : Completed compiling 
> command(queryId=hive_20200124053645_a7d699b7-c7e1-4d92-8d99-666b0a010ba7); 
> Time taken: 0.073 seconds
> INFO  : Executing 
> command(queryId=hive_20200124053645_a7d699b7-c7e1-4d92-8d99-666b0a010ba7): 
> select count(*) from testcase1
> INFO  : Query ID = hive_20200124053645_a7d699b7-c7e1-4d92-8d99-666b0a010ba7
> INFO  : Total jobs = 1
> INFO  : Launching Job 1 out of 1
> INFO  : Starting task [Stage-1:MAPRED] in serial mode
> INFO  : Subscribed to counters: [] for queryId: 
> hive_20200124053645_a7d699b7-c7e1-4d92-8d99-666b0a010ba7
> INFO  : Session is already open
> INFO  : Dag name: select count(*) from testcase1 (Stage-1)
> INFO  : Status: Running (Executing on YARN cluster with App id 
> application_1579811438512_0046)
> .
> .
> .
> INFO  : Completed executing 
> command(queryId=hive_20200124053645_a7d699b7-c7e1-4d92-8d99-666b0a010ba7); 
> Time taken: 4.228 seconds
> INFO  : OK
> +------+
> | _c0  |
> +------+
> | 3    |
> +------+
> 1 row selected (4.335 seconds)
> {code}
> Case 2: Select count/aggregate query fails with java.lang.ClassCastException: 
> java.io.PushbackInputStream cannot be cast to org.apache.hadoop.fs.Seekable
> The issue is only seen when there is a space in a field (eg:- "3,2019-12-31 
> 01" second column has a space)
> Steps to reproduce:
> 1. Create table as below
> {code}
> CREATE EXTERNAL TABLE `testcase2`(id int, name string) ROW FORMAT SERDE 
> 'org.apache.hadoop.hive.serde2.OpenCSVSerde' LOCATION '/user/hive/testcase2' 
> TBLPROPERTIES ("skip.header.line.count"="1", "skip.footer.line.count"="1");
> {code}
> 2. Upload attached testcase2.csv.bz2 file to /user/hive/testcase2
> 3. Run count(*) on table.
> {code}
> 0: > select * from testcase2;
> INFO  : Compiling 
> command(queryId=hive_20200124053159_5d8ce56a-183d-4359-a147-bd470d82e134): 
> select * from testcase2
> INFO  : Semantic Analysis Completed (retrial = false)
> INFO  : Returning Hive schema: 
> Schema(fieldSchemas:[FieldSchema(name:testcase2.id, type:string, 
> comment:null), FieldSchema(name:testcase2.name, type:string, comment:null)], 
> properties:null)
> INFO  : Completed compiling 
> command(queryId=hive_20200124053159_5d8ce56a-183d-4359-a147-bd470d82e134); 
> Time taken: 0.075 seconds
> INFO  : Executing 
> command(queryId=hive_20200124053159_5d8ce56a-183d-4359-a147-bd470d82e134): 
> select * from testcase2
> INFO  : Completed executing 
> command(queryId=hive_20200124053159_5d8ce56a-183d-4359-a147-bd470d82e134); 
> Time taken: 0.01 seconds
> INFO  : OK
> +---------------+-----------------+
> | testcase2.id  | testcase2.name  |
> +---------------+-----------------+
> | 2             | 2019-12-31 01   |
> +---------------+-----------------+
> 1 row selected (0.119 seconds)
> > select count(*) from testcase2;
> INFO  : Compiling 
> command(queryId=hive_20200124053542_a7d6820e-c3df-4d70-bc00-f3916441da88): 
> select count(*) from testcase2
> INFO  : Semantic Analysis Completed (retrial = false)
> INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:_c0, 
> type:bigint, comment:null)], properties:null)
> INFO  : Completed compiling 
> command(queryId=hive_20200124053542_a7d6820e-c3df-4d70-bc00-f3916441da88); 
> Time taken: 0.079 seconds
> INFO  : Executing 
> command(queryId=hive_20200124053542_a7d6820e-c3df-4d70-bc00-f3916441da88): 
> select count(*) from testcase2
> INFO  : Query ID = hive_20200124053542_a7d6820e-c3df-4d70-bc00-f3916441da88
> INFO  : Total jobs = 1
> INFO  : Launching Job 1 out of 1
> INFO  : Starting task [Stage-1:MAPRED] in serial mode
> INFO  : Subscribed to counters: [] for queryId: 
> hive_20200124053542_a7d6820e-c3df-4d70-bc00-f3916441da88
> INFO  : Session is already open
> INFO  : Dag name: select count(*) from testcase2 (Stage-1)
> ERROR : Status: Failed
> ERROR : Vertex failed, vertexName=Map 1, 
> vertexId=vertex_1579811438512_0046_2_00, diagnostics=[Vertex 
> vertex_1579811438512_0046_2_00 [Map 1] killed/failed due 
> to:ROOT_INPUT_INIT_FAILURE, Vertex Input: testcase2 initializer failed, 
> vertex=vertex_1579811438512_0046_2_00 [Map 1], java.lang.ClassCastException: 
> java.io.PushbackInputStream cannot be cast to org.apache.hadoop.fs.Seekable
>       at 
> org.apache.hadoop.fs.FSDataInputStream.getPos(FSDataInputStream.java:75)
>       at 
> org.apache.hadoop.hive.ql.io.SkippingTextInputFormat.getCachedStartIndex(SkippingTextInputFormat.java:128)
>       at 
> org.apache.hadoop.hive.ql.io.SkippingTextInputFormat.makeSplitInternal(SkippingTextInputFormat.java:74)
>       at 
> org.apache.hadoop.hive.ql.io.SkippingTextInputFormat.makeSplit(SkippingTextInputFormat.java:66)
>       at 
> org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:379)
>       at 
> org.apache.hadoop.hive.ql.io.HiveInputFormat.addSplitsForGroup(HiveInputFormat.java:532)
>       at 
> org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:789)
>       at 
> org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:243)
>       at 
> org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:278)
>       at 
> org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:269)
>       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:1730)
>       at 
> org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:269)
>       at 
> org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:253)
>       at 
> com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
>       at 
> com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
>       at 
> com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>       at java.lang.Thread.run(Thread.java:745)
> ]
> {code}
> The above behavior appears after applying HIVE-21924



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to