#parquet #warc #arrow #binary-file

程序+库 warc-parquet

WARC 到 Parquet 的转换工具

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解析实现

Download history 3/week @ 2024-03-09 5/week @ 2024-03-16 35/week @ 2024-03-30 18/week @ 2024-04-20 1/week @ 2024-04-27 5/week @ 2024-05-04 1343/week @ 2024-05-11 36/week @ 2024-05-18 491/week @ 2024-05-25 133/week @ 2024-06-01 618/week @ 2024-06-08 111/week @ 2024-06-15 402/week @ 2024-06-22

每月1,265 次下载

MIT 许可证

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