0

動的パーティションを持つハイブ テーブルに挿入しようとしています。過去数日間、同じクエリが正常に実行されていましたが、現在、以下のエラーが発生しています。

Diagnostic Messages for this Task: java.lang.RuntimeException:
org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error:
Unable to deserialize reduce input key from
x1x128x0x0x46x234x240x192x148x1x68x69x86x50x0x1x128x0x104x118x1x128x0x0x46x234x240x192x148x1x128x0x0x25x1x128x0x0x46x1x128x0x0x72x1x127x255x255x255x0x0x0x0x1x71x66x80x0x255
with properties
{columns=reducesinkkey0,reducesinkkey1,reducesinkkey2,reducesinkkey3,reducesinkkey4,reducesinkkey5,reducesinkkey6,reducesinkkey7,reducesinkkey8,reducesinkkey9,reducesinkkey10,reducesinkkey11,reducesinkkey12,
serialization.lib=org.apache.hadoop.hive.serde2.binarysortable.BinarySortableSerDe,
serialization.sort.order=+++++++++++++,
columns.types=bigint,string,int,bigint,int,int,int,string,int,string,string,string,string}
    at org.apache.hadoop.hive.ql.exec.mr.ExecReducer.reduce(ExecReducer.java:283)
    at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:506)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:447)
    at org.apache.hadoop.mapred.Child$4.run(Child.java

FAILED: Execution Error, return code 2 from
org.apache.hadoop.hive.ql.exec.mr.MapRedTask MapReduce Jobs Launched: 
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 3.33 sec   HDFS
Read: 889 HDFS Write: 314 SUCCESS Stage-Stage-2: Map: 1  Reduce: 1  
Cumulative CPU: 1.42 sec   HDFS Read: 675 HDFS Write: 0 FAIL

以下の設定を使用すると、クエリは正常に実行されます

set hive.optimize.sort.dynamic.partition=false

この値を true に設定すると、同じエラーが発生します。

ソース テーブルはシーケンス形式で格納され、宛先テーブルは RC 形式で格納されます。この設定が内部的にどのような違いをもたらすのか、誰か説明できますか?

4

2 に答える 2

1

Insert Table動的パーティションを True に設定して実行しようとすると、これらのエラーが発生することがあります。

hive.optimize.sort.dynamic.partitionこれは、Hiveが有効なときにデータの一部ではないレデューサー フェーズを支援するために、いくつかの内部列を渡すために発生します。この設定は安定したものではありません。

そのため、この設定は hive0.14.0 以降のバージョンではデフォルトで無効になっていますが、hive0.13.0 ではデフォルトで有効になっています。あなたがそれを得る願っています....

于 2015-10-16T12:54:26.730 に答える