Comment lire un jeu de données de parquet de taille modeste dans une mémoire en mémoire Pandas DataFrame sans configurer une infrastructure informatique en grappe telle que Hadoop ou Spark? aime lire en mémoire avec un simple Python sur un ordinateur portable. Les données ne résident pas sur HDFS. Elles se trouvent soit sur le système de fichiers local, soit éventuellement sur S3. Je ne souhaite pas lancer et configurer d’autres services comme Hadoop, Hive ou Spark.
Je pensais que Blaze/Odo aurait rendu cela possible: la documentation Odo mentionne Parquet, mais les exemples semblent tous passer par une exécution externe de Hive.
pandas 0.21 introduit nouvelles fonctions pour Parquet :
pd.read_parquet('example_pa.parquet', engine='pyarrow')
ou
pd.read_parquet('example_fp.parquet', engine='fastparquet')
Le lien ci-dessus explique:
Ces moteurs sont très similaires et doivent lire/écrire des fichiers au format parquet presque identiques. Ces bibliothèques diffèrent par leurs dépendances sous-jacentes différentes (fastparquet en utilisant numba, tandis que pyarrow utilise une c-library).
Mise à jour: depuis que j'ai répondu à cette question, beaucoup de travail a été effectué sur Apache Arrow pour améliorer la lecture et l'écriture du parquet. Aussi: http://wesmckinney.com/blog/python-parquet-multithreading/
Il y a un lecteur de parquet python qui fonctionne relativement bien: https://github.com/jcrobak/parquet-python
Il créera des objets python) et vous devrez ensuite les déplacer vers un Pandas DataFrame afin que le processus soit plus lent que pd.read_csv
par exemple.