'一个简单的JSON/python数据Parquet转换器'
项目描述
这个库封装了pyarrow,提供了一些工具,可以轻松地将JSON数据转换为Parquet格式。它主要使用Python编写。它会遍历文件。它在内存中多次复制数据。它不是最快的,但对于较小的数据集或对速度没有太大问题的用户来说,它是方便的。
安装
使用pip
pip install json2parquet
使用conda
conda install -c conda-forge json2parquet
使用方法
以下是如何加载一个随机JSON数据集的方法。
from json2parquet import convert_json
# Infer Schema (requires reading dataset for column names)
convert_json(input_filename, output_filename)
# Given columns
convert_json(input_filename, output_filename, ["my_column", "my_int"])
# Given columns and custom field names
field_aliases = {'my_column': 'my_updated_column_name', "my_int": "my_integer"}
convert_json(input_filename, output_filename, ["my_column", "my_int"], field_aliases=field_aliases)
# Given PyArrow schema
import pyarrow as pa
schema = pa.schema([
pa.field('my_column', pa.string),
pa.field('my_int', pa.int64),
])
convert_json(input_filename, output_filename, schema)
您也可以直接处理Python数据结构
from json2parquet import load_json, ingest_data, write_parquet, write_parquet_dataset
# Loading JSON to a PyArrow RecordBatch (schema is optional as above)
load_json(input_filename, schema)
# Working with a list of dictionaries
ingest_data(input_data, schema)
# Working with a list of dictionaries and custom field names
field_aliases = {'my_column': 'my_updated_column_name', "my_int": "my_integer"}
ingest_data(input_data, schema, field_aliases)
# Writing Parquet Files from PyArrow Record Batches
write_parquet(data, destination)
# You can also pass any keyword arguments that PyArrow accepts
write_parquet(data, destination, compression='snappy')
# You can also write partitioned date
write_parquet_dataset(data, destination_dir, partition_cols=["foo", "bar", "baz"])
如果您知道您的模式,您可以指定自定义的日期时间格式(目前只有一个)。如果您没有传递PyArrow模式,则此格式将被忽略。
from json2parquet import convert_json
# Given PyArrow schema
import pyarrow as pa
schema = pa.schema([
pa.field('my_column', pa.string),
pa.field('my_int', pa.int64),
])
date_format = "%Y-%m-%dT%H:%M:%S.%fZ"
convert_json(input_filename, output_filename, schema, date_format=date_format)
尽管json2parquet可以推断模式,但它也有助于从外部拉取模式
from json2parquet import load_json
from json2parquet.helpers import get_schema_from_redshift
# Fetch the schema from Redshift (requires psycopg2)
schema = get_schema_from_redshift(redshift_schema, redshift_table, redshift_uri)
# Load JSON with the Redshift schema
load_json(input_filename, schema)
操作注意事项
如果您使用此库将JSON数据转换为供Spark、Athena、Spectrum或Presto读取,请确保在写入Parquet文件时使用use_deprecated_int96_timestamps,否则您将看到一些非常奇怪的日期。
贡献
代码更改
克隆库的分支
运行make setup
运行make test
应用您的更改(不要增加版本号)
如有需要,添加测试
运行make test以确保没有出错
提交PR
文档更改
保持文档正确和最新总是一个挑战。任何修复都受欢迎。如果您不想克隆仓库进行本地工作,请随时使用Github进行编辑,并通过Github内置功能提交拉取请求。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
json2parquet-2.2.0.tar.gz (10.5 kB 查看哈希值)
构建分发
json2parquet-2.2.0-py3-none-any.whl (7.7 kB 查看哈希值)
关闭
json2parquet-2.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b40b2d6e2d98c6fe01a5b35e1a0d6685e24200b237c7e69ea64c00a36f555e59 |
|
MD5 | e9376f12010e8dccd93a3ae26c7f04da |
|
BLAKE2b-256 | ad9af89cf9347e1c3bf3d93fc5a37495ddd5b7d0f04a916d59598b52bfed6044 |
关闭
json2parquet-2.2.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c0c2d458e15805e369445bfbec0461fc102380a5953f3c0c0ace87256710d6ce |
|
MD5 | 1250442095f2a58c3177ba7b8e80a09a |
|
BLAKE2b-256 | 1466c27e1c0db2299ab437284933ee63de4fb40c35dbb1b3a15028b8c4758351 |