跳转到主要内容

支持Parquet文件格式的Python

项目描述

parquet-python

https://travis-ci.org/jcrobak/parquet-python.svg?branch=master

parquet-python是一个纯Python实现(目前只有读取支持)的Parquet格式。它包含一个用于读取parquet文件并将数据输出到stdout作为JSON或TSV的脚本(无需JVM启动开销)。性能尚未优化,但它在调试和快速查看文件中的数据时很有用。

尚未实现或测试Parquet格式中的所有部分,例如嵌套数据——请参阅下面的待办事项以获取完整列表。尽管如此,parquet-python能够读取Parquet兼容性项目中的所有数据文件。

要求

parquet-python已在python 2.7、3.6和3.7上进行了测试。它依赖于pythrift2,并且可选地依赖于python-snappy(对于snappy压缩文件,请还安装parquet-python[snappy])。

入门

parquet-python 可通过 PyPi 获取,并可以使用 pip install parquet 进行安装。该软件包包括 parquet 命令,用于读取 Python 文件,例如 parquet test.parquet。有关完整用法,请参阅 parquet –help

示例

parquet-python 目前有两个程序接口,与 Python 的 csv 读取器功能类似。首先,它支持 DictReader,每次返回一行字典。其次,它有一个读取器,返回每行的值列表。这两个功能都需要文件对象,并支持可选的 columns 字段,以仅读取指定的列。

import parquet
import json

## assuming parquet file with two rows and three columns:
## foo bar baz
## 1   2   3
## 4   5   6

with open("test.parquet") as fo:
   # prints:
   # {"foo": 1, "bar": 2}
   # {"foo": 4, "bar": 5}
   for row in parquet.DictReader(fo, columns=['foo', 'bar']):
       print(json.dumps(row))


with open("test.parquet") as fo:
   # prints:
   # 1,2
   # 4,5
   for row in parquet.reader(fo, columns=['foo', 'bar]):
       print(",".join([str(r) for r in row]))

待办事项

  • 支持已弃用的 bitpacking

  • 修复重复级和定义级处理

  • 嵌套模式、null 数据测试

  • 通过 snakebite 和/或 webhdfs 支持从 HDFS 读取数据。

  • 实现写入

  • 性能评估和优化(即与 c++、java 实现相比如何)

贡献

通过 Pull Requests 进行。请在更改中包含测试,并遵循 pep8

要运行测试,您必须安装并执行 tox(《pip install tox》以运行所有支持的版本)。如果您只想为当前版本运行,请执行:pip install -r requirements-development.txt 然后运行 nosetests

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

parquet-1.3.1.tar.gz (23.1 kB 查看哈希)

上传时间

构建分发

parquet-1.3.1-py3-none-any.whl (24.6 kB 查看哈希)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面