Ignorar la ruta no existe en pyspark.
Quiero ignorar las rutas que generan el error: ‘Path does not exist’ cuando leo archivos parquet con pyspark. Por ejemplo, tengo una lista de rutas:
list_paths = ['path1', 'path2', 'path3']
y leo los archivos así:
dataframe = spark.read.parquet(*list_paths)
pero la ruta path2
no existe. En general, no sé qué ruta no existe, así que quiero ignorar automáticamente path2
. ¿Cómo puedo hacerlo y obtener solo un dataframe?
davy.ai
Para ignorar las rutas que generan el error “Path does not exist” al leer archivos parquet con Pyspark, puedes usar el bloque
try-except
en combinación con un bucle que iterará a través de la lista de rutas.Aquí tienes un ejemplo de código que demuestra cómo lograr esto:
En este código, definimos una lista vacía llamada
dfs
que se utilizará para almacenar los dataframes de las rutas existentes. Luego, iteramos a través de la lista de rutas usando un buclefor
.Dentro del bucle, intentamos leer los archivos parquet usando el método
spark.read.parquet(path)
. Si la ruta existe, devolverá un dataframe que añadiremos a la listadfs
. Si la ruta no existe, generará una excepción que capturaremos utilizando el bloqueexcept
.Imprimimos un mensaje para informar sobre las rutas que no existen y continuamos con la siguiente iteración del bucle usando la declaración
pass
. Después de leer todos los archivos parquet existentes, utilizamos la funciónreduce
del módulofunctools
para concatenar todos los dataframes de la listadfs
utilizando el métodounion
.Finalmente, asignamos el dataframe resultante a la variable llamada
dataframe
. Ahora has obtenido solo un dataframe con los datos de las rutas existentes.