java.lang.Classcastexception-Fehler: org.apache.hadoop.io.Text können nicht umgewandelt werden, org.apache.hadoop.hive.ql.io.orc.OrcSerde$OrcSerdeRow
Ich versuche, um die Kompression zu arbeiten.
Ursprüngliche Tabelle, die wie folgt definiert ist :
create external table orig_table (col1 String ...... coln String)
.
.
.
partitioned by (pdate string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ( "separatorChar" = "|")
STORED AS TEXTFILE location '/user/path/to/table/';
Den Tisch orig_table hat etwa 10 Partitionen mit 100 Zeilen jeder
Zu komprimieren, habe ich eine ähnliche Tabelle mit der einzigen änderung von TEXTDATEI zu ORCFILE
create external table orig_table_orc (col1 String ...... coln String)
.
.
.
partitioned by (pdate string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ( "separatorChar" = "|")
STORED AS ORCFILE location '/user/path/to/table/';
Versucht zu kopieren der Datensätze zwischen durch:
set hive.exec.dynamic.partition.mode=nonstrict;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.LzoCodec;
[have tried with other codecs as well, with same error]
set mapred.output.compression.type=RECORD;
insert overwrite table zip_test.orig_table_orc partition(pdate) select * from default.orgi_table;
Den Fehler den ich bekomme, ist:
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"col1":value ... "coln":value}
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:503)
at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:176)
... 8 more
Caused by: java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcSerde$OrcSerdeRow
at org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat$OrcRecordWriter.write(OrcOutputFormat.java:81)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:689)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
at org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:95)
at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward(MapOperator.java:157)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:493)
... 9 more
Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched:
Stage-Stage-1: Map: 3 HDFS Read: 0 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 0 msec
Gleiche funktioniert, wenn ich die hive-Tabelle als SEQUENCEFILE - nicht mit ORC, keine Arbeit um? Ich habe gesehen, eine Reihe von Fragen, die haben die gleichen Fehler, aber in einem Java-Programm und nicht die Hive-QL
InformationsquelleAutor GreenThumb | 2015-11-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gaah! ORC ist nichts, wie CSV!!!
Erklären, was Sie falsch gemacht haben, würde ein paar Stunden dauern, und eine gute viele Buchauszüge über Hadoop und über DB-Technologie im Allgemeinen, so die kurze Antwort ist: ZEILE FORMAT und SERDE nicht sinnvoll sein, eine säulenförmig - format. Und da Sie bevölkern, die Tabelle in Hive, es ist keine EXTERNE, sondern eine "managed" - Tabelle I. M. H. O.
Start mit slideshare.net/oom65/orc-andvectorizationhadoopsummit (ein bisschen alt, nicht erfassen neue features wie z.B. "streaming" - Einsätze), dann Tauchen Sie ein in cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
Wenn Sie anspruchsvolle perf Anforderungen, look in streever.atlassian.net/wiki/display/HADOOP/... (tuning ORC-Tabelle für heiß - /kalt-Daten) und thinkbig.teradata.com/... (Einstellung
bytes.per.reducer
entsprechend Ihrer Komprimierungsrate)Für einige Hintergrundinformationen über die Konzepte beteiligt sich im ORC-design und insbesondere die "Streifen", Untersuchung über Infobright "data-packs", Netezza "- zone maps" (und übrigens auch über die Art, wie Oracle Exadata bedeutet "smart scan")
InformationsquelleAutor Samson Scharfrichter