使用Rapidminer服务器Web应用程序上传文件

Edin_KlapicEdin_Klapic 主持人、员工、RMResearcher、会员职位:299RM数据科学家
2018年11月编辑 知识库

问题

我如何上传一个文件(例如Excel文件)从我的计算机和处理结果直接在RapidMiner服务器?

回答

以下是你需要的:

  • RapidMiner服务器启动并运行
  • 文本处理扩展(在Server和Studio上)
  • 能够从RapidMiner进程创建web服务。见文章如何创建web服务获取详细信息。

简而言之,解决方案是:

  1. 创建一个HTML表单,其中包含一个type="file"的输入标签,并将其显示为Web应用可视化组件
  2. 通过HTTP-Post将文件发送到已作为web服务发布的RapidMiner进程
  3. 存储/处理文件并提供成功消息

具体解决方案:

扰流板

提示

使用特殊用户“匿名”使功能更加方便。这样,上传文件的用户不需要为上传重新验证自己。因此,“匿名”至少需要在存储所描述进程的文件夹中具有执行权限。见文章创建和管理“特殊用户”获取更多信息。
在这种情况下,您需要授予用户anonymous对存储进程的文件夹的执行权限。如果要存储数据,用户还需要写入权限。
此外,您需要调整操作URL。你需要在“rest”和“process”之间加入关键字“public”(http://localhost/api/rest/公共/进程/)

  1. 在服务器上创建一个文件夹,在其中存储流程(如果愿意,还可以在其中存储上传的数据)。
  2. 现在创建接收上传文件并对其进行处理的进程。附加的示例进程“从web app - webservice读取文件”接收一个或两个excel文件并将它们存储在存储库中。然后发送一条成功消息。
  3. 如本文所述,需要将此流程导出为web服务如何创建web服务。确保将输出格式设置为“HTML”,并将MIME类型设置为“text/ HTML”。
  4. 创建显示HTML表单的流程,并将Webservice URL设置为表单“action”的值(参见附带的示例流程)。
  5. 在你的RapidMiner服务器Web应用中创建Upload组件为“New visualization”组件。
  6. 确保将输出格式设置为“HTML”,并将MIME类型设置为“text/ HTML”。

这个功能的限制是什么?

  • 如果您启用一次上传多个文件(通过在输入类型="file"的HTML标签中使用关键字"multiple"),并且您希望将它们存储为一个示例集,则必须确保上传文件的结构相同。
  • 您只能在连接了输入端口的情况下一次上传尽可能多的文件。
  • 操作符“Publish to App”在web服务中不起作用,因为它是在不同的会话中执行的。

编辑(2016/12/15):

我刚刚上传了新的过程版本,它已经存储了每个上传的文件的原始名称以及完整的文件。

web服务现在还使用Handle Exception Operator来帮助你处理问题。

编辑(2016/12/16):

我刚刚上传了HTML表单的新流程版本。它包括HTML表单的一个版本,您可以用它重命名您上传的文件。只适用于单个文件上传。

示例进程"从web应用程序- HTML表单读取文件"的输出

上传Component.PNG

如果您选择了要上传的文件,则显示文件名

上传组件-文件选择。png

成功消息(示例进程“从web app - webservice读取文件”的输出)

上传组件- success.PNG

sgenzer yyhuang Pavithra_Rao Jasmine_ (删除用户)

评论

  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理

    这太棒了。非常感谢你发布这篇文章。我刚刚安装了它,它工作得很好。一个小问题-我如何将Excel文件名传递到进程中,以便它使用此名称存储数据集,而不是“上传的文件”。或者,更好的是,是否可以有一个小对话框询问新数据集的名称?开始上传之前?

    Jasmine_
  • Edin_KlapicEdin_Klapic 主持人、员工、RMResearcher、会员职位:299RM数据科学家

    很高兴能帮上忙。:)

    我只是上传了将原始文件存储为存储库示例集和完整(即附加)文件的进程的新版本。:)

    在HTML表单中应该包含一个对话框。我会检查并让你知道,这是如何实现的。

    最好的

    艾丁

    Jasmine_ (删除用户)
  • icsd11159icsd11159 成员职位:16Maven

    你好,

    谢谢你的帖子!但我面临一个问题。我粘贴可嵌入的HTML代码在行动(HTML应用程序),但当我测试web应用程序- webservice。rmp与web服务(RM服务器)我得到错误:

    de.rapidanalytics.ejb.service.ServiceDataSourceException:执行进程/home/admin/从web app - HTML表单读取文件时出错。rmp for service newServiceupload:不能执行虚拟操作Create Document(代替text:create_document)。

    没有什么是工作!

    先谢谢你

    Jasmine_
  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理

    你好@icsd11159所以当你得到一个“假操作符”那意味着RapidMiner不识别操作符。在这种情况下,很可能是文本处理扩展没有安装在您的服务器上。

    Jasmine_
  • icsd11159icsd11159 成员职位:16Maven

    谢谢您的回复!

    我尝试在系统设置中添加这样的扩展ex.PNG

    但没有什么是改变。

    ex.PNG 0 b
    Jasmine_
  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理

    你好@icsd11159-是的,这是不对的。这里是关于在服务器上安装扩展的文档链接:https://docs.www.turtlecreekpls.com/latest/server/administration/installing-extensions.html

    斯科特

    Jasmine_
  • mbslsmbsls 成员职位:6因素二世
    你好!@spenzer @Edin_Klapic。我想问一下我如何上传图像文件?具体来说,我如何创建一个进程来接收并处理上传的文件?我正在使用操作员打开彩色图像为我的过程,我试图设置路径到“文件名”字段。当我使用RM服务器时,我得到的消息是“文件'filename'不存在”。
    Jasmine_
  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理
    2020年2月编辑
    @mbsls欢迎来到这个社区。这里有一些碎片。

    重新上传文件:我会使用AWS S3或类似的repo来接收上传的文件(而不是这里建议的,这已经很老了)。然后我会使用读取Amazon S3或类似的抓取+进程。在与执行服务器相同的服务器上接收大量文件并不是一个好做法。

    -我假设你正试图这样做与图像挖掘扩展?这个扩展是由第三方建立了许多年前,不再支持(见http://burgsys.com/image-analysis-software.php)

    斯科特
    Jasmine_ mbsls
  • mbslsmbsls 成员职位:6因素二世
    非常感谢您的回答和快速的回复!!是的,我正试图这样做与图像挖掘扩展。我在打开彩色图像后使用的第二个操作是统计区域合并,它将彩色图像作为输入。我是新来的,我不知道如何使用阅读亚马逊S3来创建进程,这将给我从web应用程序接收上传的图像文件的路径。
    Jasmine_
登录注册置评。