formato hadoop hdfs parquet

formato - Parquet sin Hadoop?



formato parquet (5)

¿Qué tipo de datos tienes en parquet? No necesita HDFS para leer archivos de parquet. Definitivamente no es un requisito previo. Usamos archivos de parquet en Incorta para nuestras mesas de preparación. No enviamos con una dependencia de HDFS, sin embargo, puede almacenar los archivos en HDFS si lo desea. Obviamente, en Incorta podemos leer directamente desde los archivos de parquet, pero también puede usar Apache Drill para conectarse, usar file: /// como la conexión y no hdfs: /// Vea a continuación un ejemplo.

Para leer o escribir datos de parquet, debe incluir el formato de parquet en las definiciones de formato del complemento de almacenamiento. La definición del plugin dfs incluye el formato Parquet.

{ "type" : "file", "enabled" : true, "connection" : "file:///", "workspaces" : { "json_files" : { "location" : "/incorta/tenants/demo//drill/json/", "writable" : false, "defaultInputFormat" : json } },

Quiero usar parquet en uno de mis proyectos como almacenamiento de columnas. Pero no quiero depender de hadoop / hdfs libs. ¿Es posible usar parquet fuera de hdfs? O ¿Qué es la dependencia mínima?


Como es solo un formato de archivo, obviamente es posible separar el parquet del ecosistema de Hadoop. Hoy en día, el enfoque más simple que pude encontrar fue a través de Apache Arrow, consulte here para ver un ejemplo de python.

Aquí un pequeño extracto de los documentos oficiales de PyArrow:

Escritura

In [2]: import numpy as np In [3]: import pandas as pd In [4]: import pyarrow as pa In [5]: df = pd.DataFrame({''one'': [-1, np.nan, 2.5], ...: ''two'': [''foo'', ''bar'', ''baz''], ...: ''three'': [True, False, True]}, ...: index=list(''abc'')) ...: In [6]: table = pa.Table.from_pandas(df) In [7]: import pyarrow.parquet as pq In [8]: pq.write_table(table, ''example.parquet'')

Leyendo

In [11]: pq.read_table(''example.parquet'', columns=[''one'', ''three''])



Investigando la misma pregunta encontré que aparentemente no es posible por el momento. Encontré este problema de git , que propone un parquet de desacoplamiento de la api de hadoop. Al parecer no se ha hecho todavía.

En el Apache Jira encontré un issue , que pide una manera de leer un archivo de parquet fuera de hadoop. Está sin resolver en el momento de la escritura.

EDITAR:

Los problemas ya no se rastrean en github (el primer enlace de arriba está muerto). Un problema más reciente que encontré se encuentra en la Jira de Apache con el siguiente titular:

Facilita la lectura y escritura de archivos de parquet en java sin depender de hadoop


Tarde en la fiesta, pero he estado trabajando en algo que debería hacer esto posible: https://github.com/jmd1011/parquet-readers .

Esto todavía está en desarrollo, pero una implementación final debe estar disponible dentro de uno o dos meses después de escribir esto.

Edición: ¡Meses después, y todavía trabajando en esto! Está en desarrollo activo, solo lleva más tiempo del esperado.