[
https://issues.apache.org/jira/browse/HIVE-29785?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HIVE-29785:
----------------------------------
Labels: pull-request-available (was: )
> SkippingTextInputFormat: ClassCastException on skip.header.line.count files
> with lone-CR (\r) line endings
> ----------------------------------------------------------------------------------------------------------
>
> Key: HIVE-29785
> URL: https://issues.apache.org/jira/browse/HIVE-29785
> Project: Hive
> Issue Type: Bug
> Components: HiveServer2
> Affects Versions: 4.2.1
> Reporter: Smruti Biswal
> Assignee: Smruti Biswal
> Priority: Major
> Labels: pull-request-available
>
> A SELECT count(*) on an uncompressed TEXTFILE table that has
> 'skip.header.line.count'='1' fails during Tez split generation with:
> {code:java}
> java.lang.ClassCastException: class java.io.PushbackInputStream cannot be
> cast to class org.apache.hadoop.fs.Seekable (java.io.PushbackInputStream is
> in module java.base of loader 'bootstrap'; org.apache.hadoop.fs.Seekable is
> in unnamed module of loader 'app')
> at
> org.apache.hadoop.fs.FSDataInputStream.getPos(FSDataInputStream.java:80)
> at
> org.apache.hadoop.hive.ql.io.SkippingTextInputFormat.getCachedStartIndex(SkippingTextInputFormat.java:127)
> at
> org.apache.hadoop.hive.ql.io.SkippingTextInputFormat.makeSplitInternal(SkippingTextInputFormat.java:76)
> at
> org.apache.hadoop.hive.ql.io.SkippingTextInputFormat.makeSplit(SkippingTextInputFormat.java:69)
> at
> org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:382)
> at
> org.apache.hadoop.hive.ql.io.HiveInputFormat.addSplitsForGroup(HiveInputFormat.java:543)
> at
> org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:851)
> at
> org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:289){code}
> The issue appears only on lone-CR (\r) line endings. LF (\n) and CRLF (\r\n)
> are unaffected.
> Even if bare-CR isn't valid CSV, the ClassCastException is misleading. It
> should fail with a
> clear error message relating to line terminator or be handled.
> *Repro :*
>
> {code:java}
> # printf "id;name;place;\n1;smruti;ctc;\n2;biswal;bbsr;\n3;'';NULL;\n" >
> data1.csv
> # tr '\n' '\r' < data1.csv > data1_cr_only.csv
> # od -c data1_cr_only.csv
> 0000000 i d ; n a m e ; p l a c e ; \r 1
> 0000020 ; s m r u t i ; c t c ; \r 2 ; b
> 0000040 i s w a l ; b b s r ; \r 3 ; ' '
> 0000060 ; N U L L ; \r
> 0000067
> {code}
> Use the data1_cr_only.csv in a table with _skip.header.line.count_ or
> _skip.footer.line.count_ set.
> {code:java}
> CREATE TABLE text_split_test (id INT, name STRING, place STRING)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ';'
> STORED AS TEXTFILE
> TBLPROPERTIES ('skip.header.line.count' = '1');
> SELECT COUNT(*) from text_split_test;{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)