使用说明

本文为您介绍Mars集群上的操作、MaxCompute读取表以及获取Mars UI地址等更多操作。

说明

如果您需要了解开发Mars作业的详细操作指导,详情请参见Mars

前提条件

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

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数量。此集群Worker数量为5。

    • 4:每个Worker的核数。此处每个Worker为4核。

    • 16:每个Worker的内存大小。此处每个Worker内存为16 GB。

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

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

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

    当指定options.verbose=True时,新建Mars集群过程中会打印MaxCompute Instance的Logview、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天会被自动释放。不再需要使用Mars集群时,您可以通过调用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())