【问题标题】:Microsoft R .xdf file微软 R .xdf 文件
【发布时间】:2017-04-20 20:33:33
【问题描述】:

我有一些关于 .xdf 文件的问题:

  1. 这究竟是什么?
  2. 这种类型的文件是如何工作的?
  3. Microsoft R 如何处理这种类型的文件?
  4. data.frames 有哪些优势?

我真的很期待你的回答。

问候 R123456789

【问题讨论】:

  • 我已经读过了,但是手册没有回答我的问题。这些问题对我理解使用 Microsoft R 进行编程非常重要。
  • 该链接回答了所有问题,1. 它是一个压缩数据文件。 2,3. 使用包导出/导入功能。 4. 与数据帧不同,它不位于内存中。
  • 感谢您的回答。这意味着,xdf 文件像普通文件一样存储在 SQL Server 上的文件夹中,还是本地和 data.frames “存储”在内存中?这意味着,使用 xdf 文件我没有内存限制?

标签: r microsoft-r


【解决方案1】:
  1. XDF 文件是一种压缩的二进制文件格式,具有用户可选择的压缩级别,可以在此处找到一些简单的事实:https://support.microsoft.com/en-us/help/3104260/qa-what-is-the-.xdf-file-format XDF 文件有两种形式,独立和复合。对于独立 XDF 文件,您将看到存储在磁盘上的单个文件,扩展名为 .xdf。对于 Composite,XDF 文件由一个目录表示,其中包含元数据和数据子目录。此外,对于复合、元数据和数据文件,目录中的文件被拆分并单独压缩为 XDF 部分文件。

  1. 它是 Microsoft R Server 内部的专有实现,我可以扩展这个答案,但我需要细化这个问题,“这种类型的文件是如何工作的?”

  1. XDF 文件存储在磁盘上,不位于内存中。 Microsoft R Server 通过调用 RxXdfData() 或 rxImport() 将读取 XDF 文件并将其解压缩,然后将其作为数据帧插入内存。许多 Microsoft R“rx”函数可以直接将 XDF 路径作为数据源或接收器,并根据需要管理将段读取到内存中。

  1. 使用 XDF 作为数据源/接收器的优点是您不需要将整个文件缓冲到内存中以便 Microsoft R Server 使用它。它允许部分读取和写入,以及通过压缩对磁盘空间进行其他优化。由于元数据用于索引 XDF,因此它将比从平面文件中读取/写入更快。缺点主要是性能,内存中的数据(data.frames)在所有情况下都比磁盘上的数据更快。

注意:与所有文件一样,底层操作系统控制文件何时从内存写入磁盘。就您的问题而言,可以假设 XDF 文件作为标准文件驻留在磁盘上。

【讨论】:

  • 当使用 RxOdbc 或 RxSqlServerData 之类的数据源并将其直接传递给 rxLinMod 或 rxLogit 之类的函数时,这是在“内存中”创建一个 XDF 文件并将其直接传递给其他函数吗?什么是数据移动和性能的正确心智模型?
  • 这不会在内存中创建 XDF,因为本质上,XDF 会被压缩并保留在磁盘上存储。当创建一个远程上下文数据对象,然后在该对象上调用一个算法时,数据行会按照算法的请求从数据源中读取,并作为要操作的 C++ 对象保存在内存中。这些中间对象是 Microsoft R Server 专有的。此内存由 MRS 工作进程“BxlServer”拥有。它没有被抽象为 R 中的一种数据类型。在操作中,R 客户端无法访问此中间数据​​。
  • 这意味着 R Server 只执行算法请求的数据并将其存储在内存中。并且在操作之后内存会被删除或保存在磁盘上以供后续算法使用,这也需要数据?
  • 实现的细节比这要复杂一些,但是,如果您在作业运行时监控您的 revoJobs 目录,您将看到生成的 .iro 文件。这些是中间结果输出文件,它们将被合并形成一个结果。 R 服务器背后的整个范例是在内存中保留最少的数据,以便您的算法可以在太大而无法同时放入内存的数据上有效地运行。但是高级设计与您描述的完全一样,当形成中间结果时,内存要么被释放,要么被缓存到磁盘。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多