【问题标题】:Piping unzip in a SAS infile在 SAS 文件中管道解压缩
【发布时间】:2011-09-28 14:52:44
【问题描述】:

假设我在 SAS 中执行以下操作:

filename  tmp pipe 'unzip -c -qq ./data_xml.zip';
libname   tmp xml xmlmap=TMMap access=READONLY;

data header; set tmp.header; run;
data owners; set tmp.owners; run;

这将解压缩 data_xml.zip 文件并使用 SAS xmlmap 文件生成两个数据集,headerowners

我的问题是,解压缩将在data_xml.zip 上运行多少次?解压缩会只发生一次,还是会发生两次,因为我从tmp libname 设置数据集两次?

【问题讨论】:

  • 您能否通过查看服务器上的性能监视器并在两个数据步骤之间暂停来推断这一点?我的钱是两次。
  • 如果你想确保它只解压一次,我建议在定义库之前使用 X“O/S 命令行”语句解压文件。

标签: xml pipe sas


【解决方案1】:

简短的回答是,是的,它会解压缩两次。

据我了解,unzip -c 本质上将该数据转换为顺序源,因为它从 unzip 命令直接流式传输到 PIPE 库名。

假设您希望通过-cPIPE 进行流式传输,因为磁盘空间和/或首先将文件登陆到磁盘的性能问题。不幸的是,我相当确定事情的设置方式,最小化额外解压缩的 CPU 的唯一方法是首先将其放到磁盘上的临时文件中。

但是,根据文件的大小,第二次解压缩的 CPU 占用可能不会超过 I/O 占用,因为必须至少额外一次从磁盘读取扩展文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2018-11-23
    • 2021-09-12
    相关资源
    最近更新 更多