sail s3 集成简单测试

sail 是基于object-store这个包实现对于对象存储的支持的,以下是一个简单的测试

启动配置

  • s3 minio
services:
  minio:
    image: minio/minio
    ports:
      - "9000:9000"
      - "19001:19001"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
      MINIO_API_SELECT_PARQUET: on
    command: server --console-address :19001 --quiet /data
  • 环境变量
env \
  AWS_ACCESS_KEY_ID="minio" \
  AWS_SECRET_ACCESS_KEY="minio123" \
  AWS_ENDPOINT="http://localhost:9000" \
  AWS_VIRTUAL_HOSTED_STYLE_REQUEST="false" \
  AWS_ALLOW_HTTP="true" \
  RUST_LOG=debug sail spark server

读取以及写入

  • s3.py
from pyspark.sql import SparkSession

spark = SparkSession.builder.remote(f"sc://localhost:50051").getOrCreate()

df = spark.read.parquet("s3://demo/apps/")
df.createOrReplaceTempView("users")

spark.sql("SELECT count(*) from users").show()

df.write.mode("overwrite").parquet("s3://demo/appsv2/datasv2/processed_usersv2.parquet")
  • 效果

说明

目前集成上感觉并不是很方便,需要基于环境变量(实际上按照spark 以及代码中的处理,是支持基于配置文件的启动模式的)同时在测试的时候发现写入不是很稳定,偶尔会有不成功的问题,同时相比本地盘差异还是不小的,如果能支持cache 处理应该会好不少

参考资料

https://docs.lakesail.com/sail/latest/development/recipes/object-store.html#testing-the-object-store

https://crates.io/crates/object_store

https://github.com/apache/arrow-rs-object-store

posted on 2025-07-03 08:00  荣锋亮  阅读(17)  评论(0)    收藏  举报

导航