在 Ray 上使用 Mars#
`Mars` 是一个基于张量的统一大规模数据计算框架,可扩展 Numpy、Pandas 和 Scikit-learn。Mars on Ray 使您能够轻松地使用 Ray 集群扩展程序。目前,Mars on Ray 支持 Ray actor 和 task 作为执行后端。如果使用 Ray actor,任务将由 Mars 调度器调度。这种模式可以重用所有 Mars 调度器优化。如果使用 Ray task 模式,所有任务将由 Ray 调度,这样可以重用 Ray future 提供的故障转移和流水线能力。
安装#
您可以通过 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:https://mars-project.readthedocs.io/en/latest/installation/ray.html#mars-ray 获取更多信息。