2011-09-16 19 views
7

Puedo encontrar el nombre del archivo de entrada en una clase mapper utilizando FileSplit al escribir el programa en Java.Obtener el nombre del archivo de entrada en el programa hadoop de transmisión

¿Hay una manera correspondiente para hacer esto cuando escribo un programa en Python (usando el streaming?)

He encontrado lo siguiente en el documento de streaming hadoop en Apache:

Ver parámetros configurados. Durante la ejecución de un trabajo de transmisión, , se transforman los nombres de los parámetros "mapred". Los puntos (.) quedan subrayados (_). Por ejemplo, mapred.job.id se convierte en mapred_job_id y mapred.jar se convierte en mapred_jar. En su código, use los nombres de los parámetros con los guiones bajos.

Pero todavía no puedo entender cómo hacer uso de esto dentro de mi asignador.

Cualquier ayuda es muy apreciada.

Gracias

Respuesta

7

De acuerdo con la "Hadoop : The Definitive Guide"

Hadoop conjuntos de parámetros de configuración de trabajo como variables de entorno para los programas de streaming. Sin embargo, reemplaza el carácter no alfanumérico con guiones bajos para asegurarse de que sean nombres válidos. La siguiente expresión Python muestra cómo puede recuperar el valor de la propiedad mapred.job.id desde un script Python Transmisión:

os.environ [ "mapred_job_id"]

También puede establecer las variables de entorno para el Proceso de transmisión iniciado por MapReduce aplicando la opción -cmdenv al programa de iniciador de transmisión (una vez para cada variable que desee establecer). Por ejemplo, los siguientes conjuntos de la variable de entorno MAGIC_PARAMETER:

-cmdenv MAGIC_PARAMETER = abracadabra

+2

Parece que la propiedad que necesita Krishnamutry se denomina "map.input.file": es probable que aparezca como variable de entorno "map_input_file" para el trabajo de transmisión. –

+0

Nota: los períodos deben sustituirse por guiones bajos –

+0

Gracias - se actualizó. –

0

El nuevo ENV_VARIABLE para Hadoop 2.x es MAPREDUCE_MAP_INPUT_FILE

+0

Debería utilizar minúsculas 'mapreduce_map_input_file' – ofekp

4

mediante el análisis del mapreduce_map_input_file (nuevo) o map_input_file (obsoleto) variable de entorno, obtendrá el nombre del archivo de entrada del mapa.

Aviso:
Las dos variables de entorno son entre mayúsculas y minúsculas, todas las letras son minúscula.

+1

'map_input_file' para hadoop 0.20.x para cualquier persona atascada en un clúster anterior – Blake

Cuestiones relacionadas