在 Ray 上使用 Mars#

Mars 是一个基于张量的统一化大规模数据计算框架,可扩展 NumPy、Pandas 和 Scikit-learn。在 Ray 上使用 Mars 可以轻松地通过 Ray 集群来扩展你的程序。当前,Mars on Ray 同时支持 Ray actors 和 tasks 作为执行后端。如果使用 Ray actors,任务将由 Mars 调度器进行调度。此模式可以重用所有 Mars 调度器优化。如果使用 Ray tasks 模式,所有任务将由 Ray 进行调度,这可以重用 Ray futures 提供的故障转移和流水线功能。

安装#

你可以通过 pip 简单地安装 Mars

pip install pymars>=0.8.3

入门#

在 Ray 集群上运行 Mars 作业很容易。

通过以下方式在本地启动新的 Mars on Ray 运行时

import ray
ray.init()
import mars
mars.new_ray_session()
import mars.tensor as mt
mt.random.RandomState(0).rand(1000_0000, 5).sum().execute()

或者连接到一个已经初始化的 Mars on Ray 运行时

import mars
mars.new_ray_session('http://<web_ip>:<ui_port>')
# perform computation

与 Dataset 交互

import mars.tensor as mt
import mars.dataframe as md
df = md.DataFrame(
    mt.random.rand(1000_0000, 4),
    columns=list('abcd'))
# Convert mars dataframe to ray dataset
import ray
# ds = md.to_ray_dataset(df)
ds = ray.data.from_mars(df)
print(ds.schema(), ds.count())
ds.filter(lambda row: row["a"] > 0.5).show(5)
# Convert ray dataset to mars dataframe
# df2 = md.read_ray_dataset(ds)
df2 = ds.to_mars()
print(df2.head(5).execute())

有关更多信息,请参阅 Mars on Ray