sas - 使用 MP Connect 进行 SAS 并行处理入门

标签 sas

我正在尝试了解 MPConnect 以及如何使用它进行并行处理。

作为一个简单的示例,我启动了一个打印“Hello World!”的 session 。永远,另一个打印“再见世界!”。我说“waitfor any”和“rget”,我期待“再见世界!”在日志中因为“Hello World!”将永远持续下去,而“再见世界!”已完成。不幸的是,这不起作用。

一般来说,我很难从远程提交的任务中检索输出。

option cpucount=4 sascmd="!sascmd" autosignon;

rsubmit task1 wait=no;

    data _null_;
        do while(1);
        put "Hello World!";
        end;

    run;

endrsubmit;


rsubmit task2 wait=no;

    data _null_;
        put "Bye World!";
    run;

endrsubmit;


waitfor _any_;
rget;

signoff task1;
signoff task2;

最佳答案

问题似乎是,当您运行同步进程时,它们彼此完全断开连接。即使您只是在等待快速 task2在继续之前完成:

rsubmit task2 wait=no;
    data _null_;
        put "Bye World!";
    run;
endrsubmit;

SAS 需求 task1也完成决赛rget :

rsubmit task1 wait=no;
    data _null_;
        do while(1);
        put "Hello World!";
        end;
    run;
endrsubmit;

我认为正在发生的事情是 SAS task2满足waitfor _any_条件并能够在 task2 之后进行处理。然而rget需要每个(已完成)进程的最终日志文件,然后才能将它们合并到客户端 session 日志窗口中。

查看 SAS 文档的详细信息部分 here :

编辑:

再多尝试一下,您可以使用统一的库名称测试它们之间的连接(每个进程都有自己独特的工作库名称,因此它们不会相互冲突):

根据客户端计算机上的需要分配库名称和选项:

libname testlib 'C:/test' ;
option cpucount=4 sascmd="!sascmd" autosignon;

定义两个进程并行运行:

* Process 1 ;
rsubmit task1 wait=no;
libname testlib 'C:/test' ;
data testlib.test1 ;
  do i=1 to 1000 ;
    do j=1 to 1000;
      output ;
    end ;
  end ;
run ;
endrsubmit;

* Process 2 ;
rsubmit task2 wait=no;
libname testlib 'C:/test' ;
data testlib.test2 ;
  do i=1 to 1000 ;
    output ;
  end ;
run ;
endrsubmit;

然后您可以使用以下代码,该代码将在 process1 时运行仍在运行,但它将能够访问 process2 的输出数据集:

* Wait for either of the above processes and the process remaining code;
waitfor _any_;

proc sql noprint ;
  select sum(i)
  into :result
  from testlib.test2 
;quit ;

%put *** SUM OF TEST2 IS: &result *** ;

关于sas - 使用 MP Connect 进行 SAS 并行处理入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30567288/

相关文章:

sas - 生成 SAS 宏代码而不执行它

sas - 使用 guid 在 sas 中创建唯一的文件名

csv - 在 SAS 中使用 PROC IMPORT 与不带标题或逗号的 CSV 文件

同一个表中的 SAS Vlookup

vba - SAS VBA 连接

csv - 将多个 SAS 数据集批量转换为 CSV 文件

hadoop - Proc Transpose 的 SAS Hive SQL (Hadoop) 版本?

sql - Proc SQL 中的 IIF

SAS从csv文件中提取字符串变量

date - SAS 日期 : format the quarter as year/quarter