#parquet #json #命令行工具 #JSON格式 #文件格式 #流式处理 #行分隔

app parquet2json

一个将Parquet以行分隔JSON形式流式传输的命令行工具

20个稳定版本 (3个主要版本)

4.0.0 2024年6月7日
3.1.0 2024年4月5日
3.0.0 2024年3月27日
2.2.0 2024年2月9日
1.0.1 2021年7月31日

#98 in 解析实现

Download history 8/week @ 2024-04-28 13/week @ 2024-05-19 111/week @ 2024-06-02 27/week @ 2024-06-09 21/week @ 2024-06-16 1/week @ 2024-06-23

每月1,225次下载

MIT许可协议

25KB
252 代码行

parquet2json

一个将Parquet行分隔JSON形式流式传输的命令行工具。

它只从文件、HTTP或S3位置读取所需范围,并支持偏移/限制和列选择。

它使用Apache Parquet官方原生Rust实现,该实现对压缩格式和复杂类型支持良好。

如何使用

crates.io安装,并在命令行中执行,例如:

$ cargo install parquet2json
$ parquet2json --help

Usage: parquet2json <FILE> <COMMAND>

Commands:
  cat       Outputs data as JSON lines
  schema    Outputs the Thrift schema
  rowcount  Outputs only the total row count
  help      Print this message or the help of the given subcommand(s)

Arguments:
  <FILE>  Location of Parquet input file (file path, HTTP or S3 URL)

Options:
  -h, --help     Print help
  -V, --version  Print version

$ parquet2json cat --help

Usage: parquet2json <FILE> cat [OPTIONS]

Options:
  -o, --offset <OFFSET>    Starts outputting from this row (first row: 0, last row: -1) [default: 0]
  -l, --limit <LIMIT>      Maximum number of rows to output
  -c, --columns <COLUMNS>  Select columns by name (comma,separated,?prefixed_optional)
  -n, --nulls              Outputs null values
  -h, --help               Print help

S3设置

凭证按标准AWS工具链提供,即通过环境变量(AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY)、AWS凭证文件或IAM ECS容器/实例配置文件提供。

默认AWS区域必须通过环境变量(AWS_DEFAULT_REGION)在AWS凭证文件中设置,并且必须与对象存储桶的区域相匹配。

示例

使用它将输出流式传输到文件和其他工具,如grepjq

输出到文件

$ parquet2json ./myfile.parquet cat > output.jsonl

从S3或HTTP(S3)

$ parquet2json s3://overturemaps-us-west-2/release/2024-03-12-alpha.0/theme=base/type=land/part-00001-10ae8a61-702e-480f-9024-6dee4abd93df-c000.zstd.parquet cat
$ parquet2json https://overturemaps-us-west-2.s3.us-west-2.amazonaws.com/release/2024-03-12-alpha.0/theme%3Dbase/type%3Dland/part-00001-10ae8a61-702e-480f-9024-6dee4abd93df-c000.zstd.parquet cat

使用jq筛选选定列

$ parquet2json ./myfile.pq cat --columns=url,level | jq 'select(.level==3) | .url'

许可协议

MIT

依赖关系

~35–47MB
~1M SLoC