2017-07-03 2 views
0

Nous stockons des champs de chaîne dont la longueur varie de petite (quelques Ko) à très longue (< 400 Mo) dans la table HIVE. Nous sommes maintenant confrontés au problème de MOO lors de la copie de données d'une table à une autre (sans conditions ou jointures), ce qui n'est pas exactement ce que nous faisons en production, mais c'est le cas d'utilisation le plus simple. Ainsi, le HQL est fondamentalement juste:HIVE très long champ donne OOM Heap

INSERT INTO new_table 
SELECT * FROM old_table; 

Container et Java Heap a été mis à 16 Go, nous avons essayé différents formats de fichiers (rcfile, ORC), avec et sans compression, moteurs différents (MR, TEZ), etc., mais rien ne nous aide et nous tombons toujours sur OOM.

Nous ne savons pas exactement ce qui s'y passe exactement. Nous nous attendions à ce que le processus Java ne prenne que quelques fois la mémoire de la longueur maximale d'un enregistrement unique, qui est ~ 400M, mais pas tout le tas de 16Go. Pouvez-vous nous donner quelque chose sur lequel nous devrions essayer ou nous concentrer?

Version utilisée: HDP 2.4.2

journal des échantillons lors de l'utilisation TEZ + ORC + 8G de RAM: https://pastebin.com/uza84t6F

+0

S'il vous plaît joindre les journaux d'erreurs et ruche paramètres. – leftjoin

+0

édité, attaché le journal d'échantillon pour TEZ + ORC + 8G RAM – Martin

Répondre

0
  1. Essayez d'utiliser TEXTFILE au lieu de la SIO. L'écriture d'un fichier ORC nécessite beaucoup plus de mémoire. Essayez d'augmenter le parallélisme, ajoutez plus de mappeurs. Jouez avec ces paramètres pour Tez et essayer d'augmenter le nombre de cartographes:

--min et la taille max divisée:

set tez.grouping.min-size=16777216; 
set tez.grouping.max-size=1073741824; 

Voir ici: https://community.hortonworks.com/articles/14309/demystify-tez-tuning-step-by-step.html

+0

Merci. J'ai changé le format des fichiers de stockage sous-jacents en séquencefile et il commence à fonctionner comme un charme. Semble que ORC et RCFile ne sont pas construits pour un tel cas d'utilisation spécifique comme un très long champ de chaîne. – Martin

+0

La création de fichiers en colonnes nécessite plus de mémoire pour les tampons spéciaux pour le traitement des données. – leftjoin