subir sistema que formatea ficheros directorio descargar crear configuracion archivos and acceder shell hadoop scripting hdfs

shell - sistema - Comprobando si el directorio en HDFS ya existe o no



hdfs hadoop que es (5)

Tengo la siguiente estructura de directorios en HDFS,

/analysis/alertData/logs/YEAR/MONTH/DATE/HOURS

Es decir, los datos se obtienen por completo y se almacenan en formato de año / mes / día / hora.

He escrito un guión de shell en el que estoy pasando camino hasta

"/analysis/alertData/logs" ( this will vary depending on what product of data i am handling)

Luego, el script de shell pasa por las carpetas de año / mes / fecha / hora y devuelve la ruta más reciente.

Por ejemplo:

Directories present in HDFS has following structure: /analysis/alertData/logs/2014/10/22/01 /analysis/alertData/logs/2013/5/14/04 shell script is given path till : " /analysis/alertData/logs " it outputs most recent directory : /analysis/alertData/logs/2014/10/22/01

Mi pregunta es: ¿cómo puedo validar si la ruta de acceso del directorio HDFS al script del shell es válida o no? Digamos que paso una ruta incorrecta como entrada o ruta que no existe, así que cómo manejar eso en el script de shell.

La ruta equivocada de la muestra puede ser:

wrong path : /analysis/alertData ( correct path : /analysis/alertData/logs/ ) wrong path : /abc/xyz/ ( path does not exit in HDFS )

Intenté usar Hadoop dfs -test -z / -d / -e opciones no funcionó para mí. Cualquier sugerencia para esto

NOTA: No publicar mi código original aquí, ya que la solución a mi problema no depende de ello.

Gracias por adelantado.


Hola, he utilizado la siguiente secuencia de comandos para probar si el directorio HDFS existe o no. He visto en tu pregunta que probaste este comando de prueba y no funcionó. ¿Podrían darnos alguna pista de por qué esto no funciona?

hadoop fs -test -d $dirpath if [ $? != 0 ] then hadoop fs -mkdir $dirpath else echo "Directory already present in HDFS" fi


Ya que

hadoop fs -test -d $yourdir

devuelve 0 si existe, luego

if [$? == 0]; then echo "exists" else echo "not exists" fi


Pruebe sin comando de prueba []:

if $(hadoop fs -test -d $yourdir) ; then echo "ok";else echo "not ok"; fi


Hadoop fs está en desuso Uso: hdfs dfs --test - [ezd] URI

Opciones: la opción -e verificará si el archivo existe, devolviendo 0 si es verdadero. La opción -z verificará si el archivo es de longitud cero y devuelve 0 si es verdadero. La opción -d verificará si la ruta es directorio, devolviendo 0 si es verdadero. Ejemplo: hdfs dfs -test -d $ yourdir

Por favor, compruebe lo siguiente para obtener más información: https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html Saludos


En Java podemos verificar esto usando la clase FileSystem.

FileSystem