4 个版本

0.0.3 2023年5月7日
0.0.2 2023年4月23日
0.0.1 2023年4月14日
0.0.0 2023年4月8日

#14 in #local-filesystem

27 每月下载量

MIT 许可证

100KB
2.5K SLoC

湖流

湖流是一个与对象存储(如S3)交互的工具。它从头开始使用Rust构建,并提供通过JS/WASM访问Python和网页API的能力。

湖流的理念是创建一个高性能、面向未来的数据工具,能够适应新的(由AI驱动的)网络和使用模式。这包括客户端和服务模式的工作能力,以及模块化设计以允许网络上的计算功能。

短期内,重点是实现基本功能,如列出、复制和删除。

当前版本(0.0.3)启用

  • 在S3存储桶或本地文件系统中列出和搜索项
  • 按名称、大小和修改时间过滤
  • 从本地文件系统或S3存储桶获取项的内容

先决条件

  • Python或Rust
  • 可选:具有有效访问密钥和秘密密钥的S3账户

安装

湖流可以通过Python(API)或直接通过Rust(CLI)使用。基于浏览器的(以本地优先)版本将在短期内加入路线图。

Python(API)

只有Linux和MacOS的wheel预编译。Windows版本很快就会跟上来。

pip install lakestream

Rust(CLI)

克隆仓库并使用Cargo编译项目

git clone https://github.com/serverlessnext/lakestream.git
cd lakestream
cargo build --release

然后,将二进制文件从./target/release/lakestream复制到您的本地路径。

使用方法

快速入门

列出
# for s3://buckets: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY must be set
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=us-east-1  # optional
# Find all files in the "reports" directory, with names containing "2023" and
# modified within the last 30 days, in a given S3 bucket.
lakestream ls s3://bucket-name/reports/ --name "*2023*" --mtime "-30D

# Find all files in the current directory, larger than 100 MB and modified
# within the last 5 days.
lakestream ls . --size "+100M" --mtime "-5D"

# Find all files larger than 1 megabyte (MB) in a given S3 Bucket
lakestream ls s3://bucket-name/ --size "+1M" --recursive

# Find all files modified more than 1 hour ago, recursively
lakestream ls . --mtime "+1h" --recursive

更多 列出 示例 这里

请求
# print file contents from local file to stdout
lakestream -X GET README.rst

# write file contents from S3 to local file
lakestream -X GET s3://bucket-name/100MB.bin > 100MB.bin

更多 请求 示例 这里

Python也可以用作CLI。参数与Rust库一一映射。

# Python
python -m lakestream ls ./

# Rust
lakestream ls ./

Python API

import lakestream

client = lakestream.Client()

# Define a filter dictionary
filter_dict = {
    "name": "example.txt",
    "size": "5",
    "mtime": "1D",
}

# List the contents of a storage location with the filter
result = client.list("s3://your-bucket", recursive=True, filter_dict=filter_dict)

print(result)

Python API 文档 这里

贡献

欢迎为湖流项目做出贡献。请在GitHub仓库上打开问题或提交拉取请求。

许可证

湖流在MIT许可证下发布。有关详细信息,请参阅LICENSE。

链接

文档: https://lakestream.dev

依赖项

~6–22MB
~347K SLoC