10 个版本 (5 个重大更新)
0.6.1 | 2023年9月13日 |
---|---|
0.6.0 | 2023年9月13日 |
0.5.0 | 2023年8月27日 |
0.4.0 | 2022年6月24日 |
0.1.3 | 2022年6月21日 |
#651 在 解析实现
每月1,265 次下载
31KB
444 行
warc-parquet
🗄️ 一个将 WARC 转换为 Parquet 的工具。
📦 安装
可以使用 cargo
安装二进制文件。
$ cargo install warc-parquet
要在项目中使用此包,请将以下内容添加到您的 Cargo.toml
文件中:
[dependencies]
warc-parquet = "0.6.1"
🤸 使用
二进制工具
安装后,可以使用 warc-parquet
工具将 WARC 转换为 Parquet。
$ wget --warc-file example 'https://example.com'
$ cat example.warc.gz | warc-parquet --gzipped > example.zstd.parquet
warc-parquet
设计成与 UNIX 生态系统无缝集成。因此,同时处理多个 WARC 文件非常简单。
$ wget --warc-file github 'https://github.com'
$ cat example.warc.gz github.warc.gz | warc-parquet --gzipped > combined.zstd.parquet
它还可以通过标准的 UNIX 管道进行预处理。
$ cat example.warc.gz | gzip -d | warc-parquet > example.zstd.parquet
提供各种压缩选项,包括不进行压缩的选项。
$ cat example.warc.gz | warc-parquet --gzipped --compression gzip > example.gz.parquet
💡 使用
warc-parquet --help
可以显示完整选项和用法信息。
包
有关如何在您的程序中使用 Reader
的更多信息,请参阅 文档。
DuckDB
一旦拥有 Parquet 数据,有许多方法可以处理它。然而,与 DuckDB 的集成可能是一个不错的选择。
$ duckdb
v0.3.3 fe9ba8003
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D select type, id from 'example.zstd.parquet';
┌──────────┬─────────────────────────────────────────────────┐
│ type │ id │
├──────────┼─────────────────────────────────────────────────┤
│ warcinfo │ <urn:uuid:A8063499-7675-4D8D-A736-A1D7DAE84C84> │
│ request │ <urn:uuid:3EB20966-D74F-4949-AACB-23DB3A0733A7> │
│ response │ <urn:uuid:8B92CADC-F770-45BE-8B72-E13A61CD6D1C> │
│ metadata │ <urn:uuid:4C0E9E17-E21B-49E0-859A-D1016FBDE636> │
│ resource │ <urn:uuid:14F502A5-3BDE-4D0B-8A43-95F4BB8398C6> │
│ resource │ <urn:uuid:6B6D6ADD-52FF-4760-AA00-FB9E739CABBE> │
└──────────┴─────────────────────────────────────────────────┘
D describe select * from 'example.zstd.parquet';
┌─────────────────────────┬─────────────┬──────┬─────┬─────────┬───────┐
│ column_name │ column_type │ null │ key │ default │ extra │
├─────────────────────────┼─────────────┼──────┼─────┼─────────┼───────┤
│ id │ VARCHAR │ YES │ │ │ │
│ content_length │ UINTEGER │ YES │ │ │ │
│ date │ TIMESTAMP │ YES │ │ │ │
│ type │ VARCHAR │ YES │ │ │ │
│ content_type │ VARCHAR │ YES │ │ │ │
│ concurrent_to │ VARCHAR │ YES │ │ │ │
│ block_digest │ VARCHAR │ YES │ │ │ │
│ payload_digest │ VARCHAR │ YES │ │ │ │
│ ip_address │ VARCHAR │ YES │ │ │ │
│ refers_to │ VARCHAR │ YES │ │ │ │
│ target_uri │ VARCHAR │ YES │ │ │ │
│ truncated │ VARCHAR │ YES │ │ │ │
│ warc_info_id │ VARCHAR │ YES │ │ │ │
│ filename │ VARCHAR │ YES │ │ │ │
│ profile │ VARCHAR │ YES │ │ │ │
│ identified_payload_type │ VARCHAR │ YES │ │ │ │
│ segment_number │ UINTEGER │ YES │ │ │ │
│ segment_origin_id │ VARCHAR │ YES │ │ │ │
│ segment_total_length │ UINTEGER │ YES │ │ │ │
│ body │ BLOB │ YES │ │ │ │
└─────────────────────────┴─────────────┴──────┴─────┴─────────┴───────┘
依赖项
~39MB
~788K SLoC