org - hadoop wikipedia
Borrar archivo/carpeta de Hadoop (7)
Con Scala:
val fs:FileSystem = FileSystem.get(new URI(filePath), sc.hadoopConfiguration);
fs.delete(new Path(filePath), true) // true for recursive
sc es el SparkContext
Estoy ejecutando una actividad EMR dentro de un Data Pipeline que analiza los archivos de registro y recibo el siguiente error cuando mi Pipeline falla :
Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://10.208.42.127:9000/home/hadoop/temp-output-s3copy already exists
at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:121)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:944)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:905)
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:1132)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:905)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:879)
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1316)
at com.valtira.datapipeline.stream.CloudFrontStreamLogProcessors.main(CloudFrontStreamLogProcessors.java:216)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:187)
¿Cómo puedo eliminar esa carpeta de Hadoop?
Cuando dice eliminar de Hadoop, realmente quiere decir eliminar de HDFS.
Para borrar algo de HDFS haz uno de los dos
Desde la línea de comando:
- forma desaprobada:
hadoop dfs -rmr hdfs://path/to/file
- nueva forma (con hadoop 2.4.1):
hdfs dfs -rm -r hdfs://path/to/file
O desde java:
FileSystem fs = FileSystem.get(getConf());
fs.delete(new Path("path/to/file"), true); // delete file, true for recursive
Desde la línea de comando:
hadoop fs -rm -r /folder
Me puse en contacto con el soporte de AWS y parecía que el problema era que los archivos de registro que estaba analizando eran muy grandes y eso creaba un problema con la memoria. Agregué a mi definición de tubería "masterInstanceType": "m1.xlarge" en la sección EMRCluster y funcionó.
Para eliminar un archivo de hdfs use el comando: hadoop fs -rm -r /FolderName
Para eliminar un archivo de hdfs, puede usar el siguiente comando:
hadoop fs -rm -r -skipTrash /path_to_file/file_name
Para eliminar una carpeta de hdfs, puede usar el siguiente comando:
hadoop fs -rm -r -skipTrash /folder_name
Debe utilizar la opción -skipTrash, de lo contrario se le solicitará un error.
Uso hadoop 2.6.0, la línea de comando ''hadoop fs -rm -r fileName.hib'' funciona bien para eliminar cualquier archivo hib en mis archivos de archivos hdfs