从存储到人工智能洞察: 利用 MinIO 和 Polars 简化数据管道
将 MinIO 的高性能、可扩展企业对象存储的强大功能与 Polars(闪电般快速的 DataFrame 库)的快速内存数据处理功能相结合,可以显著提高数据管道的性能。在 AI 工作流中尤其如此,其中预处理大型数据集和执行特征选择是关键步骤。在这篇文章中,我们将探讨将 MinIO 与 Polars 集成如何简化您的数据工作流程并优化性能,尤其是对于复杂的分析工作负载。
为什么选择 Polars 进行 AI 数据预处理?
Polars 是一个专为速度而设计的 DataFrame 库。与 Pandas 等基于 Python 的传统库不同,Polars 是用 Rust 构建的,使其能够高效处理大型数据集。Polars 采用急切执行模型,通过立即执行操作而不是等待延迟计算来提供快速结果。这使得 Polars 对于实时分析和时间敏感型数据处理特别有用。
Polars 的主要功能:
-
速度: Polars 使用 Rust 构建,速度非常快,可以处理远远超出 Pandas 管理能力的大型数据集。
-
延迟执行:Polars 有一个延迟 API,它通过重新排序和组合操作来优化查询计划以获得更好的性能。
-
多线程:Polars 利用多线程进行并行计算,使其能够比单线程解决方案更快地处理数据。
MinIO 的主要功能:
-
性能:作为市面上最快的对象存储,MinIO 的高性能与 Polars 的速度完美互补,能够检索和存储海量数据集。
-
规模:MinIO 的分布式架构可水平扩展,与您不断增长的 AI/ML 工作负载保持同步,同时 Polars 可以有效地处理数据。
-
数据持久性和冗余性: MinIO 的纠删码和对象锁定以现代、真正有效的方式保护您的数据。
-
与 AI/ML 框架集成:通过 MinIO 对 S3 API 的严格合规性和强大的 SDK,MinIO 支持各种 AI/ML 框架,如 TensorFlow 和 PyTorch。通过这些集成,您可以使用 Polars 检索预处理的数据,直接进行训练和推理,而不会遇到任何问题。
使用 GPU 加速 Polars 工作流程(可选)
对于那些寻求更高性能的用户,Polars 为由 RAPIDS cuDF 提供支持的 GPU 引擎提供了测试版,可在 NVIDIA GPU 上提供高达 13 倍的处理速度。这在处理数亿行时特别有用,因为即使是很小的性能提升也可以显著减少处理时间。要访问此 GPU 加速,您只需安装支持 GPU 的 Polars 并在收集数据时指定 GPU 引擎。
pip install polars[gpu] --extra-index-url=https://pypi.nvidia.com
其他集成信息将相同。
将 MinIO 与 Polars 集成
让我们探索如何将 MinIO 集成到一个有凝聚力的数据处理管道中。无论您是处理大规模时间序列数据、日志文件还是 AI/ML 模型训练数据集,MinIO 都提供了存储基础,而 Polars 则快速高效地处理这些数据。
第 1 步:确保已安装 Docker
安装 Docker(如果尚未完成):请遵循官方 Docker 安装指南。
第 2 步:在无根 Docker 容器中部署 MinIO
运行 MinIO 容器:接下来,以无根模式启动 MinIO 容器。您将指定数据目录以及访问密钥和 Secret 密钥。根据需要调整端口和目录。
mkdir -p ${HOME}/minio/data
docker run \-p 9000:9000 \-p 9001:9001 \--user $(id -u):$(id -g) \--name minio1 \-e "MINIO_ROOT_USER=ROOTUSER" \-e "MINIO_ROOT_PASSWORD=CHANGEME123" \-v ${HOME}/minio/data:/data \quay.io/minio/minio server /data --console-address ":9001"
-
-p 9000:9000:在端口 9000 上公开 MinIO 的 API。
-
-p 9001:9001:在端口 9001 上公开 Web 控制台。
-
-v ~/minio/data:/data:挂载主机上的 ~/minio/data 目录以存储数据。
-
MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 用于身份验证。
第 3 步:访问 MinIO
容器启动后,打开 Web 浏览器并转到:http://localhost:9001
使用 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 凭证登录。
第 4 步:创建存储桶并上传 Parquet 文件
根据以下说明在 MinIO 中创建存储桶:
接下来,将 Parquet 文件添加到您的存储桶中。
第 5 步:在 Polars 中从 MinIO 访问数据
要将 MinIO 中的数据读取到 Polars DataFrame 中,您可以将 MinIO 的 S3 兼容 API 与 Python 中的 requests 库一起使用。使用您的 MinIO 用户名 (访问密钥) 和密码 (密钥) 进行身份验证。假设您的数据存储在 Parquet 文件中;您首先需要 pip 安装 MinIO 和 Polars。
pip install minio
pip install polars
以下是将这些数据直接读取到 Polars 的方法:
import polars as pl
from minio import Minio
import io# Configure MinIO S3 access
minio_url = "localhost:9000"
access_key = "ROOTUSER"
secret_key = "CHANGEME123"# Initialize MinIO client
client = Minio(minio_url,access_key=access_key,secret_key=secret_key,secure=False # Set to True if you're using HTTPS
)# Retrieve the parquet file from the bucket
bucket_name = "ducknest"
object_name = "wild_animals.parquet"# Download the object as a stream
response = client.get_object(bucket_name, object_name)# Read the file content into a Polars DataFrame
data = io.BytesIO(response.read())
df = pl.read_parquet(data)# Perform your data analysis
print(df.describe())
第 6 步:使用 Polars 处理大型数据集
Polars 在处理大型数据集时确实大放异彩。它的内存效率和多线程功能使其能够比 Pandas 等传统库更快地处理筛选、分组和聚合等复杂操作。MinIO 通过提供完美的高性能存储层来处理这些海量数据集而发挥作用。无论您的数据集有多大,数据检索都可以保持快速和高效。这是因为 MinIO 的速度仅受底层硬件的限制。Polars 和 MinIO 协同工作,形成强大的组合,实现顺畅的数据处理并最大限度地减少 AI/ML 管道中的瓶颈。例如,以下是对 Polars DataFrame 执行聚合操作的方法:
# Group by the correct column names (as per the schema)
result = df.group_by("category").agg([pl.col("value").count().alias("total_value"), # Count the number of animals in each habitatpl.col("quantity").mean().alias("avg_quantity") # Calculate the average species value (after casting to numeric)]
)# Print the result
print(result)
当您准备好部署时
当您准备好部署时,MinIO 的可扩展性将大放异彩,轻松管理海量数据集,而 Polars 可加速数据处理,确保流畅的端到端性能。与传统的块存储解决方案相比,MinIO 的 Enterprise Object Store (EOS) 不仅具有成本效益,而且还大大提高了性能。对于寻求更多控制和洞察力的组织,MinIO Enterprise Console 是一个强大的工具。它提供了一个统一的“单一管理平台”来管理您的所有 MinIO 部署,无论是在本地、云中还是在边缘。MinIO Enterprise Object Store 的另一个突出功能是 Enterprise Catalog,它支持实时搜索和查询 EB 级的对象元数据。使用 GraphQL 界面,管理员可以轻松执行合规性检查、操作审计和管理空间利用率。这些只是一整套企业工具中的两个,这些工具可用于专为 MinIO 的大规模部署而构建。当您准备好同时部署 MinIO 和 Polars 时,您将拥有所需的一切。
结论
通过将 MinIO Enterprise Object Store 与 Polars 集成,您可以构建能够轻松处理海量数据集的高性能、可扩展的数据管道。无论您是在处理实时分析、大规模 AI/ML 工作负载,还是只处理大型数据湖,这种组合都能提供速度和效率。随着对更快数据处理和可扩展存储的需求不断增长,利用 MinIO 和 Polars 等技术对于现代数据基础设施将变得越来越重要。
相关文章:
从存储到人工智能洞察: 利用 MinIO 和 Polars 简化数据管道
将 MinIO 的高性能、可扩展企业对象存储的强大功能与 Polars(闪电般快速的 DataFrame 库)的快速内存数据处理功能相结合,可以显著提高数据管道的性能。在 AI 工作流中尤其如此,其中预处理大型数据集和执行特征选择是关键步骤。在这…...
只需要 1 分钟语音数据实现声音克隆
只需要 1 分钟语音数据实现声音克隆 GPT-SoVITS 是一个基于少量语音数据(1 分钟左右)即可训练出高质量 TTS(文本转语音)模型的开源项目,提供少样本语音克隆能力。目前该开源项目已经获得了 33.2k 的 Star!…...
OpenEuler虚拟机安装保姆级教程 | 附可视化界面
0x00 系统介绍 在 2019 年 7 月 19 日,华为宣布要在年底正式开源 openEuler 操作系统;在半年后的 12 月 31 日,华为正式开源了 openEuler 操作系统,邀请社区开发者共同来贡献。 一年后,截止到 2020 年12 月 25日&…...
表格控件QTableWidget
下面说一下表格的常用方法 行列数目、行表头、列表头 行表头:就是表格控件的第一行,用于设置每一列的标题 列表头:就是表格控件的第一列,用于设置每一行的标题,通常缺省则默认显示行号 设置和获取行列的数目 在添…...
LeetCode236题:二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖…...
虚谷中使用PL/SQL改变模式下所有表的大小写
一、将表名转换为小写 1、原理和思路 首先,我们需要查询出指定模式下的所有表名,在xugu中,数据字典dba_tables包含了当前库下的所有表信息,我们可以使用游标(CURSOR)来遍历这些表名。 2、代码示例如下&am…...
数据挖掘的基本步骤和流程解析:深入洞察与策略实施
一、引言 在数据时代的浪潮中,数据挖掘技术已成为企业洞察市场、优化运营和驱动创新的利器。 它融合了统计学、机器学习、数据库管理和人工智能等领域的先进技术,旨在从海量数据中 提取有价值的信息。 本文将深入探讨数据挖掘的六个基本步骤,…...
BCJR算法——卷积码的最大后验译码
定义:输入序列为 其中每比特,同时相应的输出序列为 其中每一码字的长度为n,定义在i时刻的编码器的状态为,对于时刻里有 表示输出码字和卷积码第i时刻的输入和第i-1时刻的状态有关(包括寄存器和输出部分)&am…...
系统架构设计师论文《论SOA在企业集成架构设计中的应用》精选试读
论文真题 企业应用集成(Enterprise Application Integration, EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Service-OrientedArchitecture,SOA)的新型企业应用集成技术,强调将企业和组织内部的资源和业务…...
ceph rgw 桶分片之reshard
Ceph RGW(RADOS Gateway)的 reshard 功能是用来动态调整对象存储的分片(shard)数量,从而优化性能和存储利用率。随着数据量的增加,初始的分片设置可能无法满足性能需求,因此 reshard 功能允许用…...
开放原子开源基金会网站上的开源项目Opns存在缓冲区溢出缺陷
最近在开放原子开源基金会网站上,看到一些开源项目,之前分析出华为的鸿蒙操作系统代码,没有发现有价值的安全漏洞。现在,下载上面的Onps开源网络协议栈,既然是通讯所使用的软件,其质量应该值得信任呢&#…...
未来前端发展方向:深度探索与技术前瞻
未来前端发展方向:深度探索与技术前瞻 在数字化浪潮席卷全球的今天,前端开发作为连接用户与数字世界的桥梁,其重要性不言而喻。随着技术的不断进步和市场的不断变化,前端开发领域正经历着前所未有的变革。今天,我们将深…...
前端工程规范-2:JS代码规范(Prettier + ESLint)
Prettier 和 ESLint 是两个在现代 JavaScript 开发中广泛使用的工具,它们结合起来可以提供以下作用和优势: 代码格式化和风格统一: Prettier 是一个代码格式化工具,能够自动化地处理代码的缩进、空格、换行等格式问题,…...
Tomcat为什么要打破双亲委派?怎么保证安全
Tomcat打破双亲委派模型的原因主要是为了解决Web应用程序中的类加载冲突问题,并提供更好的灵活性和可扩展性。在Java中,双亲委派模型是一种类加载机制,它确保了类加载的安全性和一致性,但在Web应用程序的场景下,它可能…...
【C++篇】启航——初识C++(下篇)
接上篇【C篇】启航——初识C(上篇) 目录 一、引用 1.引用的概念 2.引用的基本语法 3.引用的特点 3.1 别名 3.2 不占用额外内存 3.3 必须初始化 3.4 不能为 NULL 4.引用的使用 4.1 函数参数传递 4.2 返回值 4.3 常量引用 5.引用和指针的关…...
Elasticsearch快速入门
文章目录 Elasticsearch快速入门核心概念倒排索引基本使用索引操作创建索引类型映射[了解]数据类型[了解] 查看索引删除索引 文档操作添加文档修改文档删除文档查询文档准备数据主键查询精确查询匹配查询 Elasticsearch快速入门 核心概念 Elasticsearch是面向文档的ÿ…...
uniapp微信小程序遮罩层u-popup禁止底层穿透
添加 touchmove.prevent,遮罩层底部的页面就不会滑动了微信开发者工具不生效,真机生效 <u-popup :show"showEwm" close"closeEwm" mode"center" touchmove.prevent><view class"ewmshow"></vie…...
【RocketMQ】秒杀设计与实现
🎯 导读:本文档详细探讨了高并发场景下的秒杀系统设计与优化策略,特别是如何在短时间内处理大量请求。文档分析了系统性能指标如QPS(每秒查询率)和TPS(每秒事务数),并通过实例讲解了…...
高级架构师面试题
一、技术深度方面 微服务架构的核心概念和优势: • 核心概念:将一个大型的应用拆分为多个小型的、独立部署的服务,每个服务都围绕着特定的业务功能进行构建,服务之间通过轻量级的通信机制进行交互。 • 优势: • 独…...
phpstudy简易使用
注意,本文所述的操作步骤均建立在电脑上已经完成php环境变量的配置与vscode的安装之上 、...
ubuntu server 常用配置
这里写目录标题 0001 虚拟机静态IP0002 vim tab 4个空格0003 设置时区0004 网络端口查看端口开放端口 0005 修噶机主机名 0001 虚拟机静态IP win网络链接,IP地址:192.168.220.1 - NAT网关:192.168.220.2 - ubuntu静态IP设置: ca…...
[Day 82] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
AI在風險控制中的應用案例 風險控制是企業管理中至關重要的一環,AI技術的引入為風險控制帶來了前所未有的自動化和智能化。無論是在金融、保險、製造業,還是網絡安全中,AI都能有效地分析和預測潛在風險。本文將探討AI在風險控制中的應用&…...
微信小程序map组件自定义气泡真机不显示
最近遇到一个需求需要使用uniapp的map自定义气泡 ,做完之后发现在模拟器上好好的,ios真机不显示,安卓页数时好时不好的 一番查询发现是小程序的老问题了,网上的方法都试了也没能解决 后来看到有人说用nvue可以正常显示,…...
数据结构之链表(2),双向链表
目录 前言 一、链表的分类详细 二、双向链表 三、双向链表的实现 四、List.c文件的完整代码 五、使用演示 总结 前言 接着上一篇单链表来详细说说链表中什么是带头和不带头,“哨兵位”是什么,什么是单向什么是双向,什么是循环和不循环。然后实…...
STL之list篇(下)(从底层分析实现list容器,逐步剥开list的外表)
文章目录 前言一、list的数据结构和类实现需求1.1 数据结构1.2 list类实现需求 二、list迭代器的实现2.1 为什么list不能直接把迭代器当作指针一样使用?2.2 list迭代器的框架设计2.3 *和-> 操作符的重载2.4 和-- 操作符的重载2.5 !和 操作符的重载 三、 list的函…...
视频去水印的3个技巧,教你无痕去水印
许多视频平台为了推广自身品牌或者广告用途,会在视频上添加水印。这些水印不仅影响了视频的美观,还可能限制了内容的传播范围。幸运的是,有几种简单而有效的方法可以帮助我们去除视频中的水印,同时保持视频的原始画质和观感。以下…...
LSTM模型改进实现多步预测未来30天销售额
关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色…...
八LAMP搭建
# LAMP ## 一、知识回顾 ### FTP samba nfs 特点 - 借用Linux用户作为映射用户,进行权限管理 - 软件本身还有管理控制权限 #### 客户端连接到服务器后进行读写执行等操作 ,必须同时具有: - 软件许可的权限 vsftpd: anon upload enableYES - 文件…...
Windows——解除Windows系统中文件名和目录路径的最大长度限制
第一步:打开本地组策略编辑器 按下Win R键打开运行窗口,输入 gpedit.msc 并回车,打开本地组策略编辑器。 第二步:开启 长路径设置 第三步:重启计算机...
黑名单与ip禁令是同一个东西吗
黑名单和IP禁令相关,但它们并不是完全相同的概念。以下是它们之间的区别: 黑名单 定义:黑名单通常是一个包含不允许或被禁止的用户、IP地址、域名或其他实体的列表。用途:用于阻止特定用户或实体访问某个系统或服务。黑名单可以…...
湖南省建设工程造价管理总站/怎么弄属于自己的网站
TI DAVINCI 使用最新的内核是montavista linux-2.6.18,之前说过,国内很多公司,包括开发板的软件包,一直在使用montavista linux-2.6.10,这个版本准确来说是比较低的,实时性肯定没2.6.18好(Monta…...
日本室内设计网站推荐/关键词推广优化
在放映电影的过程中,画面被一幅幅地放映在银幕上。画幅移开时,光线就被遮住,幕上便出现短暂的黑暗;每放映一个画幅后,幕上就黑暗一次。但这一次次极短暂的黑暗,被人的视觉生理现象“视觉暂留”所弥补。人眼…...
大连seo外包公司/品牌推广百度seo
1.软件的前期准备分为“需求准备”和“构建准备”,两者都有系统的规范。code complete中对这两者都提出了详细的确认方法。这里的确认方法并非戒律,而更像备忘。 2.在构建活动中的设计部分,书中提出了几大范围,我个人觉得划分得非…...
开锁公司网站模板/广东seo网站推广
之前七娃,整理过用css实现鼠标左右键禁用:静态页面js防止抽离 今天新增一个通过css设置body的样式,将鼠标左键禁用了,禁止用户选择! body{-webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-selec…...
网站开发和app开发哪个难/2345网址大全浏览器
网络故障是弱电工作中最易常见的问题,尤其是我们弱电人经常与网络打交道,那么如何才能进行网络排查,快速解决问题呢?这些基本的技术是必不可少的,我们一起来看下。一、网络排错必备为什么还要必备条件?因为…...
杀手杰夫链接网站代码/公众号推广引流
众包(Crowdsourcing)是这样一个过程:征求大批社区中的群众去完成一个任务,传统上这种任务由组织从内部选择一拨人来完成,多数是雇员或合同工。众包测试(Crowdsourced testing)利用众包的有效性和…...