如何读取本地存储在Python Pandas中的ORC文件?

Del*_*lla 4 python pandas pyspark orc data-science

我可以认为ORC文件类似于具有列标题和包含数据的行标签的CSV文件吗?如果是这样,我能以某种方式将其读入一个简单的熊猫数据框吗?我对Hadoop或Spark之类的工具并不熟悉,但是是否仅为了查看Python中本地ORC文件的内容就必须了解它们吗?

文件名是 someFile.snappy.orc

我可以在网上看到spark.read.orc('someFile.snappy.orc')有效的方法,但即使在之后import pyspark,它仍会引发错误。

小智 7

我没有找到任何不错的选择,有一些无效的项目试图包装Java阅读器。但是,pyarrow确实有一个ORC阅读器,不需要您使用pyspark。有点限制,但是可以用。

import pandas as pd
import pyarrow.orc as orc

with open(filename) as file:
    data = orc.ORCFile(file)
    df = data.read().to_pandas()
Run Code Online (Sandbox Code Playgroud)


And*_*rea 1

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 教程之一,以了解这个“世界”的基础知识。一切都会变得更加清晰。

import findspark
findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('Test').getOrCreate()
Run Code Online (Sandbox Code Playgroud)