干货分享|分布式数据科学工具 Xorbits 的使用

news/2024/11/23 20:57:35/

本章介绍分布式数据科学工具 Xorbits 。

1 Xorbits Data

Xorbits Data 是一个面向数据科学的分布式计算框架,功能类似于 Dask 和 Modin,用于加速 Pandas DataFrame 和 NumPy。Xorbits Data 通过切分大数据集并利用 Pandas 或 NumPy 执行操作。其底层采用了自主研发的 Actor 编程框架 Xoscar,不依赖于 Ray 或 Dask。

​1.1 Xorbits 集群

在进行计算之前,Xorbits 需要在多节点环境中初始化集群。在单机环境中,可以直接使用 Xorbits.init()进行初始化。在集群环境中,可以按照以下步骤进行配置:首先启动一个管理进程(Supervisor),然后在各个计算节点上启动 Worker 进程。

# 先在管理节点启动 Supervisor
xorbits-supervisor -H <supervisor_ip> -p <supervisor_port> -w <web_port>
# 在每个计算节点启动 Worker
xorbits-worker -H <worker_ip> -p <worker_port> -s 
<supervisor_ip>:<supervisor_port>

其中,和为管理节点的 IP 和端口号,为仪表盘端口号,客户端也通过这个端口与集群连接。和为每个计算节点的 IP和端口号。启动Supervisor和 Worker后,在代码中使用 xorbits.init(":")连接到这个集群,计算任务就可以横向扩展到集群上。

1.2 API 兼容性

在 Pandas DataFrame 的兼容性方面,排序如下:Modin>Xorbits>Dask DataFrame;在性能方面,排序如下:Xorbits> Dask DataFrame>Modin。

Xorbits 也在多维度上对数据进行切分,并在切分过程中保留行标签和列标签。它提供了广泛的 Pandas API 兼容性,包括但不限于 iloc()和 median()函数。

import os
import sys
sys.path.append("..")
from utils import nyc_flights
from utils import nyc_taxi
taxi_path = nyc_taxi()
import xorbits
import xorbits.pandas as pd
df = pd.read_parquet(taxi_path, use_arrow_dtype=False)
df.iloc[3]

运行结果如图所示。

df.dtypes

运行结果如图所示。

df['trip_distance'].median()

运行结果如图所示。

​1.3 推迟执行

Xorbits 采用类似于 Dask 的计算图模型,任何计算都会先转换为计算图再执行;但与 Dask不同,Xorbits 不需要明确调用 compute()来触发计算,这种方式称为推迟(Deferred)执行。

Xorbits 在后台构建了计算图,但只有遇到 print()等需要将数据呈现给用户的操作时,Xorbits才会执行计算图。这种方式使得 Xorbits 与 Pandas 和 NumPy 的语义更加相似。如果需要手动触发计算,也可以通过 xorbits.run(df)实现。

以下面的数据可视化为例,gb_time 只是一个指向计算图的指针,并不是实际数据。但当Plotly 需要 gb_time 的结果时,Xorbits 会触发计算。

df['PU_dayofweek'] = df['tpep_pickup_datetime'].dt.dayofweek
df['PU_hour'] = df['tpep_pickup_datetime'].dt.hour
gb_time = df.groupby(by=['PU_dayofweek', 'PU_hour'], 
as_index=False).agg(count=('PU_dayofweek', 'count'))
import plotly.express as px
import plotly.io as pio
pio.renderers.default = "notebook"
b = px.bar(gb_time,x='PU_hour',y='count',color='PU_dayofweek',color_continuous_scale='sunset_r',
)
b.show()

运行结果如图所示。

同样使用计算图,但 Xorbits 可以避免像 Dask DataFrame 那样关注计算图的细节,也不需要使用 repartition()。Xorbits 在构建和执行计算图时进行了内部优化。例如,当数据出现倾斜时,Xorbits 会自动优化计算图,避免计算图过大。

本篇文章就先到这这结束啦,后续还有其他干货文章大家点个关注不迷路哦!

本文摘自《Python数据科学加速:Dask、Ray、Xorbits、mpi4py》,获出版社和作者授权发布。

Python数据科学加速:Dask、Ray、Xorbits、mpi4py——jd


http://www.ppmy.cn/news/1549366.html

相关文章

java Queue 详解

Java Queue 详解 Queue 是 Java 集合框架中用于实现 队列 数据结构的接口&#xff0c;位于 java.util 包中。队列是一种 先进先出&#xff08;FIFO&#xff09; 的数据结构&#xff0c;元素按照插入的顺序依次出队。 1. Queue 的基本特性 FIFO&#xff08;First-In-First-Out&…

鸿蒙学习高效开发与测试-应用程序框架和HarmonyOS SDK(3)

文章目录 1、应用程序框架1、规范化后台进程管理2、原生支持分布式3、支持多设备的统一窗口管理4、 组件共享及面向对象5、逻辑与界面解耦6、灵活扩展机制2、HarmonyOS SDK1、 开放能力 Kit2、开放能力的检索和使用3、 方舟工具链4、前端编译器架构1、应用程序框架 应 用 程 序…

基于 RBF 神经网络辨识的单神经元 PID 模型参考自适应控制

这是一个基于 RBF 神经网络辨识 和 单神经元 PID 模型参考自适应控制 的系统框图&#xff0c;包含以下主要部分&#xff1a; RBF 神经网络模块&#xff1a;用于对系统进行辨识&#xff0c;输入误差 e(t)e(t)e(t) 和误差变化量 Δe(t)\Delta e(t)Δe(t)&#xff0c;输出与系统特…

【实用技能】使用 TX Text Control 创建带有嵌入式附件的 PDF 文档

TX Text Control .NET Server for ASP.NET&#xff08;下载试用最新版&#xff09;是一款Web应用程序的文档处理控件&#xff0c;包括用于 ASP.NET、ASP.NET Core 和 Angular 的文档编辑和查看的客户端包。目前TX Text Control .NET Server for ASP.NET 支持 .NET 5、.NET 6 和…

低代码开发平台搭建思考与实战

什么是低代码开发平台&#xff1f; 低代码开发平台是一种平台软件&#xff0c;人们能通过它提供的图形化配置功能&#xff0c;快速配置出满足各种特定业务需求的功能软件。 具有以下特点&#xff1a; 提供可视化界面进行程序开发0代码或少量代码快速生成应用 什么是低代码产…

刷题-1122

1. 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如&#xff0c;当输入5时&#xff0c;应该输出的三角形为&#xff1a; 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 import sys def generate_snake_matrix(n):matrix [[0]*n for _ in range(n)]curent_num 1…

KVM虚拟机拷贝与迁移

在使用虚拟的过程中,经常需要快速复制虚拟机以构建集群环境,不同的虚拟机管理软件有不同的管理方法,KVM(Kernel-based Virtual Machine)是一种比较流行的开源虚拟机,使用KVM复制虚拟机的过程可以分为几个步骤。这里假设你已经有了一个运行中的虚拟机,并且想要创建它的多…

【大数据技术基础 | 实验十二】Hive实验:Hive分区

文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验步骤&#xff08;一&#xff09;启动Hadoop集群&#xff08;二&#xff09;用命令进入Hive客户端&#xff08;三&#xff09;通过HQL语句进行实验 六、实验结果七、实验心得 一、实验目的 掌握Hive分区的用…