web-dev-qa-db-fra.com

Comment lire un fichier ORC stocké localement dans Python Pandas?

Puis-je considérer un fichier ORC comme un fichier CSV avec des en-têtes de colonne et des étiquettes de ligne contenant des données? Si oui, puis-je le lire en quelque sorte dans un simple pandas dataframe? Je ne suis pas très familier avec des outils comme Hadoop ou Spark, mais est-il nécessaire de les comprendre juste pour voir le contenu d'un local Fichier ORC en Python?

Le nom de fichier est someFile.snappy.orc

Je peux voir en ligne que spark.read.orc('someFile.snappy.orc') fonctionne, mais même après import pyspark, Cela génère une erreur.

4
Della

Je n'ai pas pu trouver de grandes options, il y a quelques projets morts essayant d'envelopper le lecteur Java. Cependant, pyarrow a un lecteur ORC qui ne vous obligera pas à utiliser pyspark C'est un peu limité mais ça marche.

import pandas as pd
import pyarrow.orc as orc

with open(filename) as file:
    data = orc.ORCFile(file)
    df = data.read().to_pandas()
8
Rafal Janik

Au cas où import pyarrow.orc as orc ne fonctionne pas (ne fonctionnait pas pour moi dans Windows 10), vous pouvez les lire dans le cadre de données Spark puis les convertir en cadre de données de pandas

import findspark
from pyspark.sql import SparkSession

findspark.init()
spark = SparkSession.builder.getOrCreate()
df_spark = spark.read.orc('example.orc')
df_pandas = df_spark.toPandas()
2
Duy Tran

ORC, comme AVRO et PARQUET, sont des formats spécialement conçus pour un stockage massif. Vous pouvez penser à eux "comme un csv", ce sont tous des fichiers contenant des données, avec leur structure particulière (différente de csv, ou bien un json bien sûr!).

L'utilisation de pyspark devrait être facile lecture d'un fichier orc , dès que votre environnement accorde le support Hive. Répondant à votre question, je ne suis pas sûr que dans un environnement local sans Hive vous pourrez le lire, je ne l'ai jamais fait (vous pouvez faire un test rapide avec le code suivant):

Charge les fichiers ORC, renvoyant le résultat sous forme de DataFrame.

Remarque: Actuellement, le support ORC n'est disponible qu'avec le support Hive.

>>> df = spark.read.orc ('python/test_support/sql/orc_partitioned')

Hive est un système d'entrepôt de données, qui vous permet d'interroger vos données sur HDFS (système de fichiers distribué) via Map-Reduce comme une base de données relationnelle traditionnelle (la création de requêtes de type SQL, ne prend pas en charge à 100% toutes les fonctionnalités SQL standard!) .

Modifier : essayez ce qui suit pour créer une nouvelle session Spark. Ne soyez pas impoli, mais je vous suggère de suivre un des nombreux tutoriels PySpark pour comprendre les bases de ce "monde". Tout sera beaucoup plus clair.

import findspark
findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('Test').getOrCreate()
1
Andrea