簡體   English   中英

蜂巢設置hive.optimize.sort.dynamic.partition

[英]hive setting hive.optimize.sort.dynamic.partition

我正在嘗試插入具有動態分區的配置單元表。 最近幾天,同一查詢運行良好,但現在出現以下錯誤。

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格式存儲。 誰能解釋這個設置在內部有什么區別?

有時,當我們嘗試執行將動態分區設置為True的Insert Table ,會出現這些錯誤。

發生這種情況的原因是,當啟用hive.optimize.sort.dynamic.partition時,hive傳遞了一些內部列來幫助化hive.optimize.sort.dynamic.partition器階段,這不是數據的一部分。 此設置不是一個穩定的設置。

這就是為什么此設置在hive0.14.0和更高版本中默認情況下被禁用,而在hive0.13.0中默認情況下被啟用的原因。 希望你明白了...

由於同時打開太多記錄寫入器,導致RC文件條帶緩沖區變為OOM,因此發生錯誤。


蜂巢配置屬性:

hive.optimize.sort.dynamic.partition

啟用后,動態分區列將進行全局排序。 這樣,我們就只能為減速器中的每個分區值保持一個記錄寫入器打開,從而減少減速器上的內存壓力。

  • 默認值:在Hive 0.13.0和0.13.1中為true; Hive 0.14.0及更高版本中為false(HIVE-8151)
  • 添加於:Hive 0.13.0與HIVE-6455

-Hive配置屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM