我正在使用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) 我正在通过大约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) 我有一个 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并打印出垃圾数据,因此至少在读取传入的双数组时存在问题。更具体的问题是:
apache-pig ×1
asm.js ×1
c ×1
emscripten ×1
expect ×1
hadoop ×1
javascript ×1
mapreduce ×1
shell ×1
tcl ×1
unix ×1