spark读写minio文件代码实践

本文介绍了如何使用Minion作为对象存储方案与Spark集成,包括部署Minio服务、配置SparkSession以访问Minio,以及通过S3协议进行数据的读写操作。

1、前置说明

Minion作为一个先进的对象存储方案,对于大数据和人工智能的支持有着天然的优势。它支持与Spark\Flink等技术方案进行整合,并且通过S3协议实现数据查询的下沉,这让大数据的存储与查询分离提供了事实依据。
(1) 首先,需要部署minio服务集群,搭建minio对象存储桶,可以参考我的文章Minio+ImgProxy商城图片一站式处理 或minio官网的部署和使用文档。

(2) 根据部署的minio服务的信息(如端口、Access Key、Secret Key、存储桶名称等),创建一个SparkSession对象,可以使用如下步骤进行读写Minio。

1、读取minio需要引入依赖

MinIo支持S3协议,可以使用hadoop的aws包从minIO中读写数据。

       <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop
非常好的问题! 你问的是: > **请解释 MinIO 是什么?它是做什么的?有什么特点和使用场景?** --- ## ✅ 一、一句话回答: > **MinIO 是一个高性能、分布式的对象存储系统,兼容 Amazon S3 API,主要用于存储和管理海量非结构化数据(如图片、视频、文档等)。** --- ## ✅ 二、详细解释 ### 1. 什么是对象存储? 对象存储(Object Storage)是一种用于存储非结构化数据的存储方式,数据以“对象”的形式存储,每个对象包含: - 数据本身(如一个图片文件) - 元数据(如文件大小、创建时间等) - 唯一标识符(Key) 对象存储非常适合大规模、低成本、高可用的数据存储场景。 --- ### 2. MinIO 是什么? MinIO 是一个 **开源的分布式对象存储服务**,用 Go 语言编写,性能高、部署简单,适用于现代云原生架构。 - 官网:[https://min.io](https://min.io) - GitHub:[https://github.com/minio/minio](https://github.com/minio/minio) --- ### 3. MinIO 的核心特点 | 特点 | 描述 | |------|------| | 🚀 高性能 | 支持高达 **183GiB/s** 的读写吞吐(单节点) | | 🌐 S3 兼容 | 完全兼容 Amazon S3 API,已有 S3 应用可无缝迁移 | | 🧱 分布式架构 | 可部署在多台服务器上,支持扩展、负载均衡和容错 | | 🔒 安全性 | 支持 TLS、访问控制、签名 URL、加密等 | | 🐳 容器友好 | 支持 Docker、Kubernetes 部署 | | 📦 多租户 | 支持多个用户和访问策略管理 | | 💡 轻量级 | 占用资源少,部署简单,适合边缘计算 | --- ### 4. MinIO 的典型使用场景 | 使用场景 | 示例 | |----------|------| | 🖼️ 图片/视频存储 | 作为图床、视频上传平台、CDN 后端 | | 📁 文档存储 | 存储 PDF、Word、Excel 等文档 | | 📦 数据备份 | 企业级数据备份与归档 | | 🧪 大数据分析 | 作为大数据平台(如 Spark、Hadoop)的数据湖 | | ☁️ 私有云对象存储 | 搭建私有 S3 服务,替代 AWS S3 | --- ### 5. MinIO 的架构模型 MinIO 支持以下部署模式: #### ✅ 单节点单盘(开发用) ```bash minio server /data ``` #### ✅ 单节点多盘(提高性能) ```bash minio server /data1 /data2 /data3 /data4 ``` #### ✅ 分布式多节点(生产推荐) ```bash minio server http://node1/data http://node2/data http://node3/data http://node4/data ``` --- ### 6. MinIO 的基本使用(Python 示例) 你可以使用 `minio-py` SDK 来操作 MinIO: ```python from minio import Minio from minio.error import S3Error # 初始化客户端 client = Minio( "play.min.io", access_key="YOUR_ACCESS_KEY", secret_key="YOUR_SECRET_KEY", secure=True # 使用 HTTPS ) # 创建存储桶 try: client.make_bucket("my-bucket") except S3Error as err: print("Bucket可能已存在或权限不足", err) # 上传文件 client.upload_file("my-bucket", "my-object", "path/to/local/file") # 下载文件 client.fget_object("my-bucket", "my-object", "path/to/downloaded/file") ``` --- ## ✅ 三、总结一句话: > **MinIO 是一个轻量、高性能、兼容 S3 的开源对象存储系统,非常适合搭建私有云存储、图床、数据湖等场景。** ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广漂一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值