小编Luc*_*cas的帖子

背景催生了Expect的过程

我正在使用expect在我的服务器上启动一个应用程序:

#!/usr/bin/expect

set timeout -1

spawn "bin/start-all.sh"
expect {
    -re "Found MongoDB in" { send "y\r"; exp_continue }
    -re "Found Hadoop in" { send "y\r"; exp_continue }
    -re "Going to start Hadoop" { interact }
}
Run Code Online (Sandbox Code Playgroud)

我可以在脚本运行的几秒钟内访问我的服务器上的应用程序,但是一旦它结束,应用程序就会变得不可用.

我在调试模式下运行expect并在结束时获得以下输出:

expect: does "vendors area. Do you want to start it? [y/n] y\r\n" (spawn_id exp6) match regular expression "Found MongoDB in"? Gate "Found MongoDB in"? gate=no
"Found Hadoop in "? Gate "Found Hadoop in "? gate=no
"Going to start Hadoop"? Gate "Going to …
Run Code Online (Sandbox Code Playgroud)

unix shell tcl expect background-process

11
推荐指数
1
解决办法
6843
查看次数

在Pig中删除单列

我正在通过大约20个ID的列表过滤表.现在我的代码看起来像这样:

A = LOAD 'ids.txt' USING PigStorage();
B = LOAD 'massive_table' USING PigStorage();
C = JOIN A BY $0, B BY $0;
D = FOREACH C GENERATE $1, $2, $3, $4, ...
STORE D INTO 'foo' USING PigStorage();
Run Code Online (Sandbox Code Playgroud)

我不喜欢的是D行,我必须通过显式声明我想要的每一个其他列来重新生成一个新表来摆脱加入列(有时这是很多列).我想知道是否有相当于:

FILTER B BY $0 IN (A)
Run Code Online (Sandbox Code Playgroud)

要么:

DROP $0 FROM C
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce apache-pig

4
推荐指数
1
解决办法
9594
查看次数

在 asm.js 中的函数之间传递双数组

我有一个 C 函数编译到 asm.js 中,参数如下:

void myfunc(double v1[], double v2[], int v_size, double c)
Run Code Online (Sandbox Code Playgroud)

它接受一个数组 ( v1),应用一个转换,然后v2用输出填充另一个相同大小的数组 ( )。

我编译它,然后运行以下JS代码:

v1 = new Array(1.0, 1.5, 2.0);
v2 = Module._malloc(8 * v1.length);

Module.ccall("myfunc", null, ["array", "number", "number", "number"], [v1, v2, v1.length, 2]);
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时,getValue(v2, "double")我得到 1.297703e-318(这是错误的),而当我运行getValue(v2 + 8, "double")getValue(v2 + 16, "double")它返回 0(这也是错误的)。

我已将 C 函数简化为仅控制台注销其内容v1并打印出垃圾数据,因此至少在读取传入的双数组时存在问题。更具体的问题是:

  1. 如何正确地将双数组传入 asm.js 函数?
  2. 如何从 asm.js 函数正确返回双精度数组?

javascript c emscripten asm.js

2
推荐指数
1
解决办法
733
查看次数