如何在映射器(Hadoop)中使用MATLAB代码?

2024-02-05

我有一个处理图像的 matlab 代码。我想创建一个使用该代码的 Hadoop 映射器。我遇到了以下解决方案,但不确定哪一个最好(因为对我来说,在 hadoop 中的每个从属节点上安装 matlab 编译器运行时非常困难):

  1. 手动将该 matlab 代码转换为 C++ 中的 OpenCV 并从映射器调用其 exe/dll(并为其提供适当的参数)。不确定,因为集群的每个节点上都安装了 Linux,而不是 Windows。

  2. 使用 Hadoop 流。但是Hadoop流需要一个可执行文件作为映射器,并且matlab的可执行文件还需要Matlab编译器运行时,这很难在每个从节点上安装。

  3. 自动将其转换为 C/C++ 代码并自动创建其 exe(不确定这是否正确,因为 exe 需要 matlab 运行时才能运行,或者转换中可能存在很难修复的编译器问题)

  4. 使用 Matlab Java Builder。但这样创建的 jar 文件也需要运行时。

有什么建议么?

提前致谢。


正如您可能已经怀疑的那样,由于 MATLAB 的运行时要求,这本质上很难做到。当我尝试通过 Condor 运行 MATLAB 代码时,我也有过类似的经历(必须分发运行时库)。

就您列出的选项而言,选项 #1 效果最好。此外,您可能无法避免使用 Linux。

但是,如果您不想失去高级软件(例如 MATLAB、Octave、Scilab 等)提供的便利,您可以尝试将 Hadoop 流与 Octave 可执行脚本结合使用。

Hadoop流不关心可执行文件的性质(无论是可执行脚本还是可执行文件,根据此(http://hadoop.apache.org/common/docs/r0.15.2/streaming.html)) 。

它所需要的只是给它一个“可执行文件”,此外还可以a)从标准输入读取,b)将输出发送到标准输出。

GNU Octave 程序可以转换为可执行脚本(在 Linux 中),能够从 stdin 读取并将输出发送到 stdout (http://www.gnu.org/software/octave/doc/interpreter/Executable-Octave-Programs .html)。

作为一个简单的例子,考虑一下:

创建一个包含以下内容的文件(例如“al.oct”):

#!/bin/octave -qf  (Please note, in my installation i had to use "#!/etc/alternatives/octave -qf")
Q = fread(stdin); #Standard Octave / MATLAB code from here on
disp(Q);

现在从命令提示符发出以下命令:

chmod +x al.oct

al.oct 现在是可执行文件...您可以使用“./al.oct”执行它。要查看 stdin、stdout 适合的位置(以便您可以将其与 Hadoop 一起使用),您可以尝试以下操作:

>>cat al.oct|./al.oct|sort

或者换句话说...“cat”文件 al.oct,将其输出通过管道传输到可执行脚本 al.oct,然后将 al.oct 的输出通过管道传输到排序实用程序(这只是一个示例,我们可以有“ cat”任何文件,但由于我们知道 al.oct 是一个简单的文本文件,所以我们只使用它)。

当然,Octave 可能并不支持 MATLAB 代码尝试调用的所有内容,但这可能是使用 Hadoop Streaming 的替代方法,而不会失去更高级别代码的便利性/功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在映射器(Hadoop)中使用MATLAB代码? 的相关文章

随机推荐

  • 使用 if(1 || !Foo()) 有什么理由吗?

    我读了一些遗留代码 if 1 Foo 是否有任何不写的理由 if Foo 两者是not相同 第一个永远不会评价Foo 因为1短路 为什么这样做 可能有人想强行进入then出于调试目的分支并将其留在那里 也可能是这是在源代码控制之前编写的 因
  • 如何指定编辑器打开crontab文件? “export EDITOR=vi”不起作用

    我使用的是 Red Hat Enterprise Linux 5 我想设置 vim 编辑器来编辑 crontab 文件 如果我跑echo EDITOR 我得到了活力 但当我跑步时crontab e 我得到了不同的编辑器 很可能你的VISUA
  • 使用 data.table 包进行条件二进制连接和引用更新

    这是我现实生活中的问题 我觉得可以很容易地解决 但我在这里遗漏了一些明显的东西 我有两个大数据集TK and DFT library data table set seed 123 TK lt data table venue id rep
  • 如何使用 Python 获取触发我的 Azure 函数的 inputBlob 的名称

    我有一个天蓝色的函数 它是由放入 blob 存储的文件触发的 我想知道如何 如果可能 获取触发该函数的 blob 文件 的名称 我尝试这样做 fileObject os environ inputBlob message Python sc
  • 尝试启动 Atom/Nuclide 时未找到流

    我正在研究react native我正在使用的应用程序AtomIDE 我在打开时遇到错误Atom 我安装了babel cli and babel preset flow使用 npm 命令 npm install save dev babel
  • 将 MS Access 表单和类/模块递归导出到文本文件?

    我在一个古老的留言板上发现了一些代码 它很好地从类 模块和表单中导出了所有 VBA 代码 见下文 Option Explicit Option Compare Database Function SaveToFile Save the co
  • Java 8 流式添加两个或多个列表中的值

    我试图进入 Java 8 并了解流和 lambda 来解决各种问题 但陷入了这个特定的问题 我通常使用 forEach 并将值存储在 Map 中来解决 您将如何编写代码来使用 Java 8 中的新功能获取预期列表 List
  • 具有选择条件的 pandas 数据框中的高效最大选择

    我有一个带有列的 pandas 数据框 除其他外 user id and start time 我想高效且易读地找到与每个用户的最大值关联的所有行start time 例如 如果这是我的数据 user id start time A B C
  • 批量传输和 Android USB API

    我有一个程序 我尝试通过 USB 将我的 Android 设备连接到网络摄像头 我在一些事情上遇到了麻烦 即正确传输数据 我尝试过使用bulkTransfer 但似乎无法识别它的使用情况 我一直在尝试寻找可能对我有帮助的例子 例如here
  • 使用 Scala 生成代码

    在 Scala 中使用 SBT 工具链时 是否可以编写一个任务来读取项目源代码的特殊部分以在编译时生成 scala 代码 有什么想法甚至文章 教程吗 我正在寻找与 Template Haskell 非常相似的东西 环树者 scala htt
  • Laravel Lighthouse 中的身份验证

    在我的 graphql API 中 我必须通过两个不同的因素来授权对字段的请求 用户是否有权访问数据或者数据是否属于用户 例如 用户应该能够看到自己的用户数据 并且所有具有管理员权限的用户也应该能够看到这些数据 我想保护这些字段 以便具有不
  • RedisTemplate过期不起作用

    我正在尝试测试 RedisTemplate 中的过期方法 例如 我将会话存储在 redis 中 然后尝试检索会话并检查值是否相同 对于过期会话 我使用 redisTemplate 的 expire 方法 对于获取过期会话 我使用 getEx
  • NuGet System.Drawing.Common .NET 6 CA1416 此调用站点可在所有平台上访问。 “Image.FromStream(Stream)”仅支持:“windows”

    升级 NuGetSystem Drawing Common到 6 0 0 会导致以下错误 CA1416 此调用站点可在所有平台上访问 仅在 Windows 上支持 Image FromStream Stream https www nuge
  • 无法将整数类型转换为 uuid

    我试着跑python3 manage py migrate 但我得到了这个error File Library Frameworks Python framework Versions 3 8 lib python3 8 site pack
  • 特定于页面的 CSS 规则 - 将它们放在哪里?

    通常 当我设计网站时 我需要将特定样式应用于页面上的特定元素 并且我绝对确定它只会应用于该页面上的该元素 例如绝对定位的按钮 或者其他的东西 我不想诉诸内联样式 因为我倾向于同意样式与标记分开的理念 所以我发现自己在内部争论将样式定义放在哪
  • Pandas 重新映射到列中的范围

    我有一个带有 id s 列的 DataFrame 可以包含重复项 gt gt gt df user id head Out 3 0 2134 1 1234 2 4323 3 25434 4 1234 Name user id dtype i
  • Roxygen2 - 如何 @export 引用类生成器?

    例如 假设我有以下包称为Test我想导出课程A In R Test R docType package import methods exportClass A A lt setRefClass A methods list foo ide
  • ASP.NET 内存泄漏 - OracleCommand 对象

    我有内存泄漏 我很难找出问题出在哪里 ASP NET 进程时常会增加到 1GB 我已按照本页 http humblecoder co uk tag windbg 上的说明进行操作 并且 gcroot 命令返回以下内容 最后 x 行 我查看了
  • 将字符串格式化为标题大小写

    如何将字符串格式化为标题大小写 http www grammar monster com lessons capital letters title case htm 下面是一个在 C 中执行此操作的简单静态方法 public static
  • 如何在映射器(Hadoop)中使用MATLAB代码?

    我有一个处理图像的 matlab 代码 我想创建一个使用该代码的 Hadoop 映射器 我遇到了以下解决方案 但不确定哪一个最好 因为对我来说 在 hadoop 中的每个从属节点上安装 matlab 编译器运行时非常困难 手动将该 matl