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 TableDynamic Partitions 设置为 True 时,我们会收到这些错误。

发生这种情况是因为 hive 传递了一些内部列来帮助 reducer 阶段,这在hive.optimize.sort.dynamic.partition启用时不是数据的一部分。此设置不是一个稳定的设置。

这就是为什么在 hive0.14.0 及更高版本中默认禁用此设置,但在 hive0.13.0 中默认启用此设置的原因。希望你能得到它......

于 2015-10-16T12:54:26.730 回答
0

由于同时打开的记录写入器过多,RC 文件条带缓冲区进入 OOM 导致错误发生。


Hive 配置属性:

hive.optimize.sort.dynamic.partition

启用后,动态分区列将全局排序。这样,我们可以为 reducer 中的每个分区值只保持一个记录写入器打开,从而减少 reducer 的内存压力。

  • 默认值:在 Hive 0.13.0 和 0.13.1 中为 true;在 Hive 0.14.0 及更高版本中为 false (HIVE-8151)
  • 添加于:Hive 0.13.0 和 HIVE-6455

源 - Hive 配置属性

于 2018-06-10T06:36:44.060 回答