es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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:

    list_paths = ['path1', 'path2', 'path3']
    dfs = []
    
    for path in list_paths:
        try:
            df = spark.read.parquet(path)
            dfs.append(df)
        except:
            print(f'La ruta {path} no existe. Saltando.')
    
    dataframe = reduce(lambda x, y: x.union(y), dfs)
    

    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 bucle for.

    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 lista dfs. Si la ruta no existe, generará una excepción que capturaremos utilizando el bloque except.

    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ón reduce del módulo functools para concatenar todos los dataframes de la lista dfs utilizando el método union.

    Finalmente, asignamos el dataframe resultante a la variable llamada dataframe. Ahora has obtenido solo un dataframe con los datos de las rutas existentes.

Comments are closed.