web-dev-qa-db-ja.com

Python Pandasにローカルに保存されているORCファイルを読み取る方法は?

ORCファイルは、データを含む列見出しと行ラベルを含むCSVファイルに似ていると考えることができますか?もしそうなら、どうにかしてそれを単純なpandasデータフレームに読み込めますか?私はHadoopやSparkなどのツールに慣れていませんが、ローカルのコンテンツを表示するためだけにそれらを理解する必要がありますか? PythonのORCファイル?

ファイル名は_someFile.snappy.orc_です

オンラインでspark.read.orc('someFile.snappy.orc')が機能することを確認できますが、_import pyspark_を実行してもエラーが発生します。

4
Della

私は素晴らしいオプションを見つけることができませんでした、Javaリーダーをラップしようとしているいくつかの死んだプロジェクトがあります。しかし、pyarrowにはpysparkを使用する必要のないORCリーダーがあります。それは少し制限されていますが、動作します。

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

万一に備えて import pyarrow.orc as orcは機能しません(Windows 10では機能しませんでした)。これらをSparkデータフレームに読み取ってから、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は、AVROやPARQUETと同様に、大容量ストレージ用に特別に設計されたフォーマットです。あなたはそれらを「csvのように」考えることができます、それらはすべて特定の構造を持つデータを含むファイルです(もちろんcsvやjsonとは異なります!)。

環境がHiveサポートを許可するとすぐに、pysparkを使用するのは簡単です orcファイルの読み取り 。あなたの質問に答えて、私はHiveのないローカル環境でそれを読むことができるかどうかわかりません、私はそれをやったことがありません(次のコードで簡単なテストを行うことができます):

ORCファイルを読み込み、結果をDataFrameとして返します。

注:現在、ORCサポートはHiveサポートと一緒にのみ使用できます。

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

Hiveは、データウェアハウスシステムです。これにより、従来のリレーショナルデータベースのようにMap-Reduceを介してHDFS(分散ファイルシステム)でデータをクエリできます(SQLのようなクエリの作成は、100%すべての標準SQL機能をサポートしていません)。 。

編集:新しいSparkセッションを作成するには、以下を試してください。失礼なことではありませんが、従うことをお勧めしますこの「世界」の基本を理解するためのPySparkチュートリアルの1つです。すべてがより明確になります。

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