Saltar al contenido

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

Agradeceríamos tu ayuda para extender nuestros escritos en referencia a las ciencias informáticas.

Solución:

¿Qué es Apache Parquet?

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 de una fila a la vez, normalmente accede a ellos de 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 de datos eficiente, 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 Parquet se pueden almacenar en cualquier sistema de archivos, no solo en HDFS. Como se mencionó anteriormente, es un formato de archivo. Es como cualquier otro archivo en el que tiene un nombre y una .parquet extensión. Sin embargo, lo que suele suceder en entornos de big data es que un conjunto de datos se dividirá (o particionará) en varios archivos de parquet para una mayor eficiencia.

Todos los productos de big data de Apache admiten archivos Parquet de forma predeterminada. Entonces, es por eso que podría parecer que solo puede existir en el ecosistema de Apache.

¿Cómo puedo crear / leer archivos Parquet?

Como se mencionó, todos los productos de big data actuales 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. Afortunadamente existen otras soluciones.

Para crear sus propios archivos de parquet:

  • En Java, consulte mi siguiente publicación: Generar archivo 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

¿Existen 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.

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

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

EDITAR:

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

Luego, 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()

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

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

Como todavía estamos en el contexto de Windows aquí, no conozco muchas formas de hacerlo. Los mejores resultados se obtuvieron utilizando Spark como motor SQL con Python como interfaz para Spark. Sin embargo, supongo que el entorno de Zeppelin también funciona, pero todavía no lo probé yo mismo.

Hay una guía muy bien hecha por Michael Garlanyk para guiar a uno 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:PATHTOYOURPARQUETFILES'

# 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()

Si haces scroll puedes encontrar las reseñas de otros desarrolladores, tú igualmente eres capaz mostrar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *