comandos pyspark y HDFS

Me gustaría hacer una limpieza al inicio de mi progtwig Spark (Pyspark). Por ejemplo, me gustaría eliminar los datos de la ejecución HDFS anterior. En cerdo esto se puede hacer usando comandos como

fs -copyFromLocal .... rmf /path/to-/hdfs 

o localmente usando el comando sh.

Me preguntaba cómo hacer lo mismo con Pyspark.

Puede ejecutar un comando de shell arbitrario mediante el ejemplo de formulario subprocess.call o sh library, por lo que algo como esto debería funcionar bien:

 import subprocess some_path = ... subprocess.call(["hadoop", "fs", "-rm", "-f", some_path]) 

Si usas Python 2.x puedes intentar usar spotify/snakebite :

 from snakebite.client import Client host = ... port = ... client = Client(host, port) client.delete(some_path, recurse=True) 

hdfs3 es otra biblioteca que se puede usar para hacer lo mismo:

 from hdfs3 import HDFileSystem hdfs = HDFileSystem(host=host, port=port) HDFileSystem.rm(some_path) 

Los enlaces de Apache Arrow Python son la última opción (y que a menudo ya está disponible en el clúster Spark, ya que se requiere para pandas_udf ):

 from pyarrow import hdfs fs = hdfs.connect(host, port) fs.delete(some_path, recursive=True)