Sal
No pude encontrar ninguna explicación en inglés simple con respecto a los archivos de Apache Parquet. Como:
- ¿Qué son?
- ¿Necesito Hadoop o HDFS para verlos, crearlos o almacenarlos?
- ¿Cómo puedo crear archivos de parquet?
- ¿Cómo puedo ver los archivos de parquet?
Cualquier ayuda con respecto a estas preguntas es apreciada.
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:
- Pruebe la siguiente utilidad de Windows: https://github.com/mukunku/ParquetViewer
¿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
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 Pandas
Cerciorarse 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
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()
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.
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, seleccioneOpen With ... Choose Another App
y seleccioneparquetfile
. Es muy lento con archivos de más de 100 MB.– Contango
23 de enero a las 14:56
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, seleccioneOpen With ... Choose Another App
y seleccioneparquetfile
. 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
Alternativa:
Uso de la herramienta CLI de DuckDB
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