Estoy aprendiendo colmena. Configuré una tabla llamada records
. Con el esquema de la siguiente manera:mapa de muestra reduce script en python para colmena produce excepción
year : string
temperature : int
quality : int
Aquí son ejemplos de filas
1999 28 3
2000 28 3
2001 30 2
Ahora me escribió un mapa de ejemplo reducir guión en Python exactamente como se especifica en el libro Hadoop La guía definitiva:
import re
import sys
for line in sys.stdin:
(year,tmp,q) = line.strip().split()
if (tmp != '9999' and re.match("[01459]",q)):
print "%s\t%s" % (year,tmp)
Lo ejecuto usando el siguiente comando:
ADD FILE /usr/local/hadoop/programs/sample_mapreduce.py;
SELECT TRANSFORM(year, temperature, quality)
USING 'sample_mapreduce.py'
AS year,temperature;
La ejecución falla. En el terminal me sale esto:
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2012-08-23 18:30:28,506 Stage-1 map = 0%, reduce = 0%
2012-08-23 18:30:59,647 Stage-1 map = 100%, reduce = 100%
Ended Job = job_201208231754_0005 with errors
Error during job, obtaining debugging information...
Examining task ID: task_201208231754_0005_m_000002 (and more) from job job_201208231754_0005
Exception in thread "Thread-103" java.lang.RuntimeException: Error while reading from task log url
at org.apache.hadoop.hive.ql.exec.errors.TaskLogProcessor.getErrors(TaskLogProcessor.java:130)
at org.apache.hadoop.hive.ql.exec.JobDebugger.showJobFailDebugInfo(JobDebugger.java:211)
at org.apache.hadoop.hive.ql.exec.JobDebugger.run(JobDebugger.java:81)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: http://master:50060/tasklog?taskid=attempt_201208231754_0005_m_000000_2&start=-8193
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
at java.net.URL.openStream(URL.java:1010)
at org.apache.hadoop.hive.ql.exec.errors.TaskLogProcessor.getErrors(TaskLogProcessor.java:120)
... 3 more
voy a la lista de trabajo con errores y este es el seguimiento de la pila
java.lang.RuntimeException: Hive Runtime Error while closing operators
at org.apache.hadoop.hive.ql.exec.ExecMapper.close(ExecMapper.java:226)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hit error while closing ..
at org.apache.hadoop.hive.ql.exec.ScriptOperator.close(ScriptOperator.java:452)
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:566)
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:566)
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:566)
at org.apache.hadoop.hive.ql.exec.ExecMapper.close(ExecMapper.java:193)
... 8 more
La misma traza repitió 3 veces más.
Por favor, alguien me puede ayudar con esto? ¿Que esta mal aquí? Voy exactamente por el libro. Cuál parece ser el problema. Hay dos errores parece. En el terminal, dice que no puede leer desde la URL del registro de tareas. En la lista de trabajos fallidos, la excepción dice algo diferente. Por favor ayuda
No tengo ninguna experiencia con hadoop/colmena así que no voy a arriesgarme a adivinar una respuesta, pero haciendo un experimento rápido donde ejecuté su script python de forma independiente y escribí sus filas de datos de muestra en stdin en la CLI fue exitoso - desde una perspectiva estrictamente python, el código funciona como se esperaba. – chucksmash
Sí, esa secuencia de comandos python es correcta. Tiene que ser, es de un libro de referencia de hadoop muy famoso: D. – Shades88
Gracias por publicar esta pregunta. Estaba buscando un ejemplo similar. ¡Muy útil! – S4M