使用说明

本文为您介绍创建Mars集群、通过Mars读取MaxCompute表以及获取Mars UI地址等相关操作说明。

前提条件

已完成Mars运行环境准备。具体操作,请参见准备工作

Mars集群操作

  • 创建Mars集群

    执行如下命令创建Mars集群。过程较久,请您耐心等待。

    from odps import options
    options.verbose = True  
    #在DataWorks PyODPS3中已经设置上述命令,因此使用PyODPS 3节点无需执行前两行代码。
    client = o.create_mars_cluster(5, 4, 16, min_worker_num=3)

    示例参数说明:

    • 5:集群的Worker数量。

    • 4:每个Worker的核数。

    • 16:每个Worker的内存大小(单位GB)。

      说明
      • 申请的单个Worker内存需要大于1 GB,最佳配置为1核:4 GB,例如单Worker配置为4核、16 GB。

      • Worker个数不应超过30个,否则会对镜像服务器造成压力。如需更多,请搜索(钉钉群号:11782920)加入MaxCompute开发者社区钉群联系技术支持。

    • min_worker_num:指当启动3Worker后,即可返回Client对象,无需等待全部Worker都启动后再返回。

    当指定options.verbose=True时,新建Mars集群过程中会打印MaxCompute InstanceLogview、Mars UI。Mars UI可以用于连接Mars集群,也可以用于查看集群、任务状态。

  • 提交作业

    创建Mars集群时会设置默认Session,通过.execute()方法执行任务,任务会被自动提交至集群。

    import mars.dataframe as md
    import mars.tensor as mt
    
    md.DataFrame(mt.random.rand(10, 3)).execute()  #使用execute方法自动提交任务至创建的集群。
  • 停止并释放集群

    Mars集群超过3天时,会被自动释放。您也可以通过client.stop_server()手动释放。

    client.stop_server()

MaxCompute表读写

Mars可以直接读写MaxCompute表。本文以读写test_marstest_mars_persist表为例,test_marstest_mars_persist表的建表语句如下。

CREATE TABLE test_mars(col1 INT,col2 INT);
INSERT into test_mars(col1, col2) VALUES (1, 2);
INSERT into test_mars(col1, col2) VALUES (3, 4);
INSERT into test_mars(col1, col2) VALUES (5, 6);

CREATE TABLE test_mars_persist(col1 INT,col2 INT);
  • 读表

    通过o.to_mars_dataframe读取MaxCompute表,并返回 Mars DataFrame

    df = o.to_mars_dataframe('test_mars')
    df.head(3).execute()

    返回结果如下。

      col1 col2
    0    1    2
    1    3    4
    2    5    6
  • 写表

    通过o.persist_mars_dataframe(df, 'table_name')Mars DataFrame保存为MaxCompute表。

    df = o.to_mars_dataframe('test_mars')
    df2 = df + 1
    o.persist_mars_dataframe(df2, 'test_mars_persist')  # 保存Mars DataFrame。
    o.get_table('test_mars_persist').to_df().head(6)  # 通过PyODPS DataFrame查看数据。

    返回结果如下。

       col1  col2
    0     2     3
    1     4     5
    2     6     7

其它操作

  • 使用已经创建的Mars集群

    通过Instance ID重建Mars集群的Client。

    client = o.create_mars_cluster(instance_id=**instance-id**)
  • 获取Mars UI地址

    Mars集群创建时指定了options.verbose=True,集群会自动打印Mars UI地址。您也可以通过client.endpoint获取Mars UI。

    print(client.endpoint)
  • 获取Logview地址

    创建集群时指定了options.verbose=True,集群会自动打印Logview。您也可以通过client.get_logview_address()获取Logview地址。

    print(client.get_logview_address())