问题标签 [r-doredis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1677 浏览

r - doRedis 是如何工作的?

我一直在玩redis 数据库的 R 接口,以及foreach的doRedis并行后端。我有几个问题,以帮助我更好地应用此工具:

  1. doMC、doSMP、doSnow 等似乎都是通过调用同一台计算机上的工作进程,将列表中的元素和要应用的函数传递给它们,然后收集结果来工作的。在 doMC 的情况下,worker 共享内存。但是,对于数据库如何提供相同的功能,我有点困惑。
  2. 当我向 doRedis 作业队列添加额外的从属计算机时(如本视频所示),整个 doredis 数据库是否正在发送到从属计算机?或者每个从站只是它在特定时刻所需的数据(即列表的一个元素和要应用的函数)。
  3. 如何将额外的数据和函数显式传递给 doRedis 作业队列,每个从站都需要执行它的计算?
  4. 使用 doRedis 和 foreach 时,是否有其他可能不适用于其他并行后端的“陷阱”?

我知道这是很多问题,但我一直遇到这样的情况,即我对并行处理如何工作的有限理解阻碍了我实现它的能力。例如,我最近尝试在大型数据库上并行计算,发现自己将整个数据库传递到集群上的每个节点,这一操作完全破坏了我从并行化中获得的任何优势。

谢谢!

0 投票
1 回答
269 浏览

r - doRedis 在 Ubuntu Linux、R 和 RStudio 中出现奇怪的套接字连接错误

我正在尝试使用 R 2.12.1 在我最新的 Ubuntu 10.0.4 环境中使用 doRedis R 包。我尝试下载最新的 2.15.1,但它会安装(使用 apt-get install ...)这个其他版本。无论如何,当我从 doRedis.R (http://bigcomputing.com/doredis.R) 运行以下行时:

我得到以下错误:

我也让 Redis 服务器运行等待接受没有问题的连接。我可以毫无问题地连接 Redis-cli 客户端。这对同一系统都是本地的。这在我的 Windows 7 上运行良好,没有任何问题。谢谢

0 投票
1 回答
927 浏览

r - 在集群上运行时插入符号中发生错误

我正在通过doRedis在集群上运行插入符号train中的函数。在大多数情况下,它是有效的,但是我经常在这种性质的最后遇到错误:

当我跑步时,traceback()我得到:

这些错误不容易重现(即它们有时会发生,但并非始终如一),并且只会在运行结束时发生。集群上的标准输出显示所有正在运行和完成的任务,所以我有点困惑。

有没有人遇到过这些错误?如果是这样,了解原因并更好地解决?

0 投票
1 回答
210 浏览

r - doRedis 工作人员在 windows 上立即关闭

解决了——看下面。

我正在尝试在 Windows 7 上使用 R 运行 doRedis 并行后端。在尝试doRedis 小插图中的第一个示例时遇到了问题:

这就是问题所在:首先,两个 R.exe 进程运行并在任务管理器中可见,然后运行两个 Rterm.exe 进程,它们加载了大约 250 MB 的数据(我希望这是我的库本地项目的 .Rprofile 文件),然后立即关闭.

我确实进行了一些检查:

Redis 服务器似乎按预期工作,我可以通过运行来验证:

并看到它确实已收到连接,并且客户端已连接。

此外,运行多个独立的 R 会话并注册“作业”队列可以工作,即运行以下命令:

然后通过输入在主 R 会话中运行 MC 示例

像宣传的那样工作——终端会话报告活动,主会话获得结果。\新队

因此,我需要帮助...

...跟踪由主 R 会话调用的工作进程立即关闭的原因。但是,我不知道从哪里开始。我知道该问题的可能解决方法,但是能够以一种无忧无虑的方式启动它会更方便。

谢谢!

解决方案

问题是命令调用的 R 进程startLocalWorkers不知道在这里寻找库。如果我redisWorker在具有正确修改的库路径列表的 R 会话中调用,则一切正常。但是,如果我要求这个 R 会话启动新的工作人员 - 一切都失败了。

解决方案是创建一个环境变量R_USER_LIBS来保存库文件夹的路径。一旦完成,一切都会完美运行。

RStudio 用户应该注意,环境变量的每次修改都需要他们重新启动 RStudio,然后子 R 进程才能读取修改后的新值R_LIBS_USER

0 投票
1 回答
268 浏览

r - doRedis 在 Windows 8 x64 中针对不同的 Redis 服务器构建返回错误

我正在使用链接中的 Redis 服务器: http : //cloud.github.com/downloads/rgl/redis/redis-2.4.6-setup-64-bit.exe 和 R version3.0.3,doRedis 1.1.0, rredis 1.6.8

Redis Worker 收到作业后立即结束

但是使用链接中的 Redis 服务器: https ://github.com/MSOpenTech/redis 和使用 cygwin 上的源代码构建的 Redis 服务器,

工人似乎能够处理工作,但主人收到错误


0 投票
1 回答
2518 浏览

r - 如何在 Windows 上将 doRedis 包版本 1.0.5 安装到 R 3.0.1 中?

当前最新的doRedis版本(1.1.0)存在bug ,建议降级到1.0.5版本。但是,我无法在 Windows XP 上将 1.0.5 包安装到 R 3.0.1 中!

我试图遵循“安装旧版本的 R 包”问题的答案:

  1. 托马斯的答案对我不起作用:

    /li>
  2. 直接编译(Mark Butler 的回答) - 对我也不起作用,即使在卸载以前安装的版本之后,甚至在安装之后也不行devtools

    /li>
  3. 我试图获取R 2.14 的旧 Windows 二进制 zip 文件。R 安装包,但尝试加载它时出现以下错误:

    /li>
  4. 我还尝试使用asieira 提出的install_urldevtools中的函数:

有什么方法可以将旧包安装到 R 3.0.1 中?

编辑:输出sessionInfo()

0 投票
1 回答
545 浏览

r - 运行doRedis-即使已导出也找不到对象

我正在通过在一台机器上运行工作者和在另一台机器上运行主/服务器来测试 doRedis 包。我的主人的代码是这样的:

在每个函数中,都会访问一个全局变量,但不会对其进行修改。我已经在 foreach 循环的 .export 部分导出了全局变量,但是每当我运行代码时,都会出现一个错误,指出找不到该变量。有趣的是,当我的所有工作人员都在一台机器上时,代码可以工作,但当我有一个“外部”工作人员时会崩溃。任何想法为什么会发生此错误,以及如何纠正它?

谢谢!

更新:我在这里有一些代码的要点:https ://gist.github.com/liangricha/fbf29094474b67333c3b

UPDATE2:我问了另一个与doRedis相关的问题:“是否有可能允许每台工作机器利用其所有核心?

@Steve Weston 回应:“每个核心启动一个 redis 工作者通常会充分利用机器。”

0 投票
0 回答
171 浏览

r - 如何为 redisWorker 手动将任务添加到 redis 队列?

是否可以手动将任务添加到redis队列中,以便它可以由redis worker执行?

作为一个简单的例子,我正在使用以下方法启动一个工人:

在另一个 R 会话中,我正在创建一个队列,并希望将一个简单的表达式(例如:)发送print("hello world")到队列,以便它由工作人员执行。

我知道如何使用foreach

我希望能够在不使用 foreach 的情况下将任务添加到队列中。原因是,我不想让我的 R 会话等待输出(脚本会将其结果写入磁盘)。

根据函数中的代码,这是我迄今为止所尝试的.doRedis()

它不起作用,我认为(至少)环境的定义是错误的......

非常欢迎任何帮助!

0 投票
2 回答
226 浏览

r - 运行文档中的 doRedis 示例时出现 TryCatch 和名称错误

我正在尝试使用 doRedis 创建一个 R 集群并使用 foreach 并行处理我的一些计算,但一直遇到错误。我的代码适用于 foreach %do% 但是当我尝试使用 %dopar% 在集群上运行时它失败了。我还尝试在 doRedis 文档中运行示例代码,但也失败了。下面是我的主脚本和工作人员的 R 控制台:

主 R 控制台:

工作人员控制台:

我不确定是什么导致了错误,但似乎我发送给工作人员的所有内容都会导致此错误:

任何人有任何想法如何解决这个问题?

0 投票
1 回答
135 浏览

r - 如何识别并杀死在 R 会话中启动的所有线程

有时线程由 R 包启动(例如在 doRedis 中,请参阅相关代码)。有没有办法如何列出在当前 R 会话中产生的线程并在 R 中杀死这些线程?或者我可以在 Windows 任务列表中识别并杀死它们吗?

我在 Windows XP 中使用 Rgui。