¿Cómo ver el archivo Apache Parquet en Windows?

8 minutos de lectura

Avatar de usuario de Sal
Sal

No pude encontrar ninguna explicación en inglés simple con respecto a los archivos de Apache Parquet. Como:

  1. ¿Qué son?
  2. ¿Necesito Hadoop o HDFS para verlos, crearlos o almacenarlos?
  3. ¿Cómo puedo crear archivos de parquet?
  4. ¿Cómo puedo ver los archivos de parquet?

Cualquier ayuda con respecto a estas preguntas es apreciada.

  • Utilidad de Windows para abrir y ver archivos de Parquet: github.com/mukunku/ParquetViewer

    – sal

    19 de junio de 2018 a las 16:59

  • Herramienta DUCKDB CLI para ver esquemas o datos de parquet – stackoverflow.com/a/74260936/6563567

    – shetty15

    31 oct a las 9:22


Avatar de usuario de Sal
Sal

¿Qué es el Parquet Apache?

Apache Parquet es un formato de archivo binario que almacena datos en forma de columnas. Los datos dentro de un archivo Parquet son similares a una tabla de estilo RDBMS donde tiene columnas y filas. Pero en lugar de acceder a los datos una fila a la vez, generalmente accede a una columna a la vez.

Apache Parquet es uno de los formatos modernos de almacenamiento de big data. Tiene varias ventajas, algunas de las cuales son:

  • almacenamiento columnar: recuperación eficiente de datos, compresión eficiente, etc…
  • Los metadatos están al final del archivo.: permite generar archivos Parquet a partir de un flujo de datos. (común en escenarios de big data)
  • Compatible con todos los productos de big data de Apache

¿Necesito Hadoop o HDFS?

No. Los archivos de Parquet se pueden almacenar en cualquier sistema de archivos, no solo en HDFS. Como se mencionó anteriormente, es un formato de archivo. Así que es como cualquier otro archivo donde tiene un nombre y un .parquet extensión. Sin embargo, lo que generalmente sucederá en entornos de big data es que un conjunto de datos se dividirá (o dividirá) en múltiples archivos de parquet para una mayor eficiencia.

Todos los productos de big data de Apache admiten archivos Parquet de forma predeterminada. Por eso puede parecer que solo puede existir en el ecosistema de Apache.

¿Cómo puedo crear/leer archivos de Parquet?

Como se mencionó, todos los productos actuales de big data de Apache, como Hadoop, Hive, Spark, etc., admiten archivos Parquet de forma predeterminada.

Por lo tanto, es posible aprovechar estos sistemas para generar o leer datos de Parquet. Pero esto está lejos de ser práctico. Imagina que para leer o crear un archivo CSV tuvieras que instalar Hadoop/HDFS + Hive y configurarlos. Por suerte hay otras soluciones.

Para crear sus propios archivos de parquet:

  • En Java, consulte mi siguiente publicación: Generar archivo de parquet usando Java
  • En .NET, consulte la siguiente biblioteca: parquet-dotnet

Para ver el contenido del archivo de parquet:

¿Hay otros métodos?

Posiblemente. Pero no existen muchos y en su mayoría no están bien documentados. Esto se debe a que Parquet es un formato de archivo muy complicado (ni siquiera pude encontrar una definición formal). Los que he enumerado son los únicos que conozco mientras escribo esta respuesta.

  • No pude encontrar ninguna información sobre la extensión de archivo para archivos de Parquet en ningún otro lugar. creo que iré con .parquet 😉

    – Tomasz Gandor

    29 de noviembre de 2019 a las 9:42

  • El ParquetViewer no ha podido abrir casi ninguno de mis archivos .:(

    – Shahar Prish

    12 abr 2021 a las 15:24

  • @ShaharPrish Abriría un ticket de emisión en el repositorio con algunos archivos de muestra.

    – sal

    13 abr 2021 a las 20:19

avatar de usuario de meow
maullar

Esto es posible ahora a través de flecha apacheque ayuda a simplificar la comunicación/transferencia entre diferentes formatos de datos, vea mi respuesta aquí o el documentos oficiales en el caso de Python.

Básicamente, esto le permite leer/escribir rápidamente archivos de parquet en pandas DataFrame como la moda dándote los beneficios de usar notebooks para ver y manejar dichos archivos como si fuera un csv expediente.

EDITAR:

Como ejemplo, dada la última versión de PandasCerciorarse pyarrow esta instalado:

Entonces simplemente puede usar pandas para manipular archivos de parquet:

import pandas as pd

# read
df = pd.read_parquet('myfile.parquet')

# write
df.to_parquet('my_newfile.parquet')

df.head()

  • A partir de 2022, esta es la única forma de leer el archivo de parquet en mac OS, ya que las herramientas de parquet están obsoletas e incluso el archivo jar no funciona.

    – nómadaSK25

    18 de noviembre a las 21:39

avatar de usuario de nirolo
nirolo

Además de la extensa respuesta de @sal, hay otra pregunta que encontré en este contexto:

¿Cómo puedo acceder a los datos en un archivo de parquet con SQL?

Como todavía estamos en el contexto de Windows aquí, no conozco muchas formas de hacerlo. Los mejores resultados se lograron utilizando Chispa – chispear como el motor SQL con Pitón como interfaz para Spark. Sin embargo, asumo que el zepelín El entorno también funciona, pero aún no lo probé.

Hay una guía muy bien hecha por Michael Garlanyk. para guiarlo a través de la instalación de la combinación Spark/Python.

Una vez configurado, puedo interactuar con los parquets a través de:

from os import walk
from pyspark.sql import SQLContext

sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)

parquetdir = r'C:\PATH\TO\YOUR\PARQUET\FILES'

# Getting all parquet files in a dir as spark contexts.
# There might be more easy ways to access single parquets, but I had nested dirs
dirpath, dirnames, filenames = next(walk(parquetdir), (None, [], []))

# for each parquet file, i.e. table in our database, spark creates a tempview with
# the respective table name equal the parquet filename
print('New tables available: \n')

for parquet in filenames:
    print(parquet[:-8])
    spark.read.parquet(parquetdir+'\\'+parquet).createOrReplaceTempView(parquet[:-8])

Una vez cargados sus parquets de esta manera, puede interactuar con la API de Pyspark, por ejemplo, a través de:

my_test_query = spark.sql("""
select
  field1,
  field2
from parquetfilename1
where
  field1 = 'something'
""")

my_test_query.show()

Avatar de usuario de Eugene
eugenio

Tal vez sea demasiado tarde para este hilo, solo haga un complemento para cualquiera que quiera ver el archivo Parquet con una aplicación de escritorio que se ejecuta en MAC o Linux.
Hay una aplicación de escritorio para ver Parquet y también otros datos en formato binario como ORCO y AVRO. Es una aplicación Java pura, por lo que se puede ejecutar en Linux, Mac y también en Windows. por favor, compruebe Visor de archivos Bigdata para detalles.

Admite tipos de datos complejos como matriz, mapa, etc.

ingrese la descripción de la imagen aquí

Avatar de usuario de Enrico Detoma
Enrico Detoma

Aquí hay un “truco” rápido para mostrar mesa individual archivos de parquet usando Python en Windows (yo uso Anaconda Python):

  • Instalar pyarrow paquete https://pypi.org/project/pyarrow/

  • Instalar pandasgui paquete https://pypi.org/project/pandasgui/

  • Crea este sencillo script parquet_viewer.py:

    import pandas as pd
    from pandasgui import show
    import sys
    import os
    
    dfs = {}
    for fn in sys.argv[1:]:
        dfs[os.path.basename(fn)] = pd.read_parquet(fn)
    show(**dfs)
    
  • Asociado .parquet extensión de archivo ejecutando estos comandos como administrador (por supuesto, debe adaptar las rutas a su instalación de Python):

    assoc .parquet=parquetfile
    ftype parquetfile="c:\Python3\python.exe" "\<path to>\parquet_viewer.py" "%1"
    

Esto permitirá abrir archivos de parquet comprimidos con formatos de compresión (por ejemplo, Zstd) no compatibles con el visor .NET en la respuesta de @Sal.

  • Usar where python para encontrar el camino a python. Ejecute un indicador de administrador de DOS (no Powershell). Si hay una asociación de archivos preexistente, haga clic derecho en cualquier .parquet archivo, seleccione Open With ... Choose Another App y seleccione parquetfile. Es muy lento con archivos de más de 100 MB.

    – Contango

    23 de enero a las 14:56

Avatar de usuario de RaHuL VeNuGoPaL
RahuL VeNuGoPaL

En Mac si queremos visualizar el contenido podemos instalar ‘parquet-tools’

  • brew instalar parquet-herramientas
  • nombre de archivo principal de herramientas de parquet

Siempre podemos leer el archivo de parquet en un marco de datos en Spark y ver el contenido.

Son de formatos columnares y son más adecuados para entornos analíticos, escriben una vez y leen muchas. Los archivos de parquet son más adecuados para aplicaciones de lectura intensiva.

  • Usar where python para encontrar el camino a python. Ejecute un indicador de administrador de DOS (no Powershell). Si hay una asociación de archivos preexistente, haga clic derecho en cualquier .parquet archivo, seleccione Open With ... Choose Another App y seleccione parquetfile. Es muy lento con archivos de más de 100 MB.

    – Contango

    23 de enero a las 14:56

¿Necesito Hadoop o HDFS para verlos, crearlos o almacenarlos?

No. Se puede hacer usando una biblioteca de su idioma favorito. Ej: con Python puedes usar. piflecha, FastParquet, pandas.

¿Cómo puedo ver los archivos de parquet? ¿Cómo puedo crear archivos de parquet?

(Opción GUI para Windows, Linux, MAC)

Puedes usar Castor para ver datos de parquet, ver metadatos y estadísticas, ejecutar consultas sql en uno o varios archivos, generar nuevos archivos de parquet, etc.

DBeaver aprovecha el controlador DuckDB para realizar operaciones en archivos de parquet.

Simplemente cree un instancia en memoria de DuckDB usando Dbeaver y ejecute las consultas como se menciona en este documento.

Aquí hay un video de Youtube que explica esto: https://youtu.be/j9_YmAKSHoA

ingrese la descripción de la imagen aquí

Alternativa:
Uso de la herramienta CLI de DuckDB

¿Ha sido útil esta solución?