web-dev-qa-db-fra.com

Qu'est-ce que Hive: Return Code 2 from org.Apache.hadoop.Hive.ql.exec.MapRedTask

Je reçois:

FAILED: Execution Error, return code 2 from org.Apache.hadoop.Hive.ql.exec.MapRedTask

En essayant de copier une table partitionnée à l’aide des commandes de la console Hive:

CREATE TABLE copy_table_name LIKE table_name;
INSERT OVERWRITE TABLE copy_table_name PARTITION(day) SELECT * FROM table_name;

J'ai initialement eu des erreurs d'analyse sémantique et je devais définir:

set Hive.exec.dynamic.partition=true
set Hive.exec.dynamic.partition.mode=nonstrict

Bien que je ne sois pas sûr de ce que font les propriétés ci-dessus? 

Sortie complète de la console Hive:

Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
  set Hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set Hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapred.reduce.tasks=<number>
Starting Job = job_201206191101_4557, Tracking URL = http://jobtracker:50030/jobdetails.jsp?jobid=job_201206191101_4557
Kill Command = /usr/lib/hadoop/bin/hadoop job  -Dmapred.job.tracker=master:8021 -kill job_201206191101_4557
2012-06-25 09:53:05,826 Stage-1 map = 0%,  reduce = 0%
2012-06-25 09:53:53,044 Stage-1 map = 100%,  reduce = 100%
Ended Job = job_201206191101_4557 with errors
FAILED: Execution Error, return code 2 from org.Apache.hadoop.Hive.ql.exec.MapRedTask
46
nickponline

Ce n'est pas la vraie erreur, voici comment le trouver:

Accédez au tableau de bord Web hadoop jobtracker, recherchez les tâches de mapreduce Hive ayant échoué et consultez le journal des tâches ayant échoué. Cela vous montrera le real error. 

Les erreurs de sortie de la console sont inutiles, en grande partie parce qu’il n’a pas une vue des tâches/tâches individuelles pour extraire les vraies erreurs (des erreurs peuvent survenir dans plusieurs tâches)

J'espère que cela pourra aider.

91
Matthew Rathbone

Je sais que j'ai 3 ans de retard sur ce fil, mais que je fournis toujours mes 2 centimes pour des cas similaires à l'avenir.

J'ai récemment été confronté au même problème/à la même erreur dans mon cluster . Le travail atteindrait toujours une réduction de plus de 80% et échouerait avec la même erreur. et la recherche, j’ai trouvé que parmi la pléthore de fichiers téléchargés, certains étaient non conformes à la structure fournie pour la table de base (la table étant utilisée pour insérer des données dans une table partitionnée). 

Le point à noter ici est que chaque fois que j'exécutais une requête de sélection pour une valeur particulière dans la colonne de partitionnement ou créais une partition statique, cela fonctionnait correctement, car dans ce cas, les enregistrements d'erreur étaient ignorés.

TL; DR: vérifiez que les données/fichiers entrants ne sont pas incohérents dans la structure, car Hive suit la philosophie Schema-On-Read.

13
user3032283

En ajoutant quelques informations ici, car il m'a fallu un certain temps pour trouver le tableau de bord Web hadoop jobtracker dans HDInsight (Hadoop d'Azure), et un collègue m'a finalement montré où il se trouvait. Il existe un raccourci sur le nœud principal appelé "Hadoop Yarn Status" qui est simplement un lien vers une page http locale ( http: // headnodehost: 9014/cluster dans mon cas). Lorsqu'il a été ouvert, le tableau de bord ressemblait à ceci:

 enter image description here

Dans ce tableau de bord, vous pouvez localiser votre application défaillante. Après avoir cliqué dessus, vous pouvez consulter les journaux de la carte individuelle et réduire les travaux.

Dans mon cas, il semblait que encore manquait de mémoire dans les réducteurs, même si j'avais déjà utilisé la mémoire dans la configuration. Cependant, pour une raison quelconque, les erreurs "Java outofmemory" que j'ai eues plus tôt ne se sont pas manifestées.

2
Mike Wise

Même si je rencontrais le même problème - lorsque coché sur le tableau de bord, j'ai trouvé l'erreur suivante. Comme les données passaient par Flume et s’étaient interrompues entre elles en raison de l’incohérence constatée dans quelques fichiers.

Caused by: org.Apache.hadoop.Hive.serde2.SerDeException: org.codehaus.jackson.JsonParseException: Unexpected end-of-input within/between OBJECT entries

Courir sur moins de fichiers cela a fonctionné. La cohérence du format était la raison dans mon cas. 

0
Dipika Baad

J'ai supprimé le fichier _SUCCESS du chemin de sortie EMR dans S3 et cela a bien fonctionné.

0
Sindhu Patil

La meilleure réponse est que le code d'erreur ne vous donne pas beaucoup d'informations. L’une des causes courantes de ce code d’erreur dans notre équipe est le fait que la requête n’était pas bien optimisée. Une raison connue était quand nous faisons une jointure interne avec les magnitudes de table de gauche plus grandes que la table de droite. L'échange de ces tables ferait généralement l'affaire dans de tels cas.

0