我有两个文件,格式如下:
field1, field2, field3
field4, field1, field5
Run Code Online (Sandbox Code Playgroud)
不同的字段编号表示不同的含义.
我想使用基于相互字段的Hadoop Streaming加入这两个文件(field1
在上面的示例中),因此输出将是field1, field2, field3, field4, field5
(其他顺序可以正常,因为它们具有所有字段).
我有名为part-r-000 [0-9] [0-9]的文件,其中包含制表符分隔的字段.我可以使用hadoop fs -text part-r-00000
它来查看它们,但无法使用猪来加载它们.
我尝试过的:
x = load 'part-r-00000';
dump x;
x = load 'part-r-00000' using TextLoader();
dump x;
Run Code Online (Sandbox Code Playgroud)
但这只会给我垃圾.如何使用猪查看文件?
可能相关的是我的hdfs目前仍在使用CDH-2.此外,如果我将文件下载到本地并运行file part-r-00000
它说part-r-00000: data
,我不知道如何在本地解压缩它.
有没有一种简单的方法可以让R自动将data.frame中的列复制到另一个?
我有类似的东西:
>DF1 <- data.frame(a=1:3, b=4:6)
>DF2 <- data.frame(c=-2:0, d=3:1)
Run Code Online (Sandbox Code Playgroud)
我希望得到类似的东西
>DF1
a b c d
1 -2 4 -2 3
2 -1 5 -1 2
3 0 6 0 1
Run Code Online (Sandbox Code Playgroud)
我通常会手工完成,如同
DF1$c <- DF2$c
DF1$d <- DF2$d
Run Code Online (Sandbox Code Playgroud)
只要我有很少的变量就可以了,但是在处理多个变量时它变得非常耗时且容易出错.有关如何有效地做到这一点的任何想法?它可能很简单,但我发誓我无法找到谷歌的答案,谢谢!
假设我有test.sh
如下。目的是通过此脚本运行一些后台任务,不断更新某些文件。如果后台任务由于某种原因终止,则应重新启动。
#!/bin/sh
if [ -f pidfile ] && kill -0 $(cat pidfile); then
cat somewhere
exit
fi
while true; do
echo "something" >> somewhere
sleep 1
done &
echo $! > pidfile
Run Code Online (Sandbox Code Playgroud)
并想这样称呼它./test.sh | otherprogram
,例如./test.sh | cat
。
管道没有关闭,因为后台进程仍然存在并且可能会产生一些输出。我怎样才能告诉管道在结束时关闭test.sh
?有没有比pidfile
在调用管道命令之前检查是否存在更好的方法?
作为一个变体,我尝试在 的末尾使用#!/bin/bash
and ,但它仍在等待管道关闭。disown
test.sh
我实际上想要实现的目标:我有一个“状态”脚本,它收集各种脚本的输出(uptime
、free
、date
、get-xy-from-dbus
等),与此处类似test.sh
。脚本的输出被传递到我的窗口管理器,它会显示它。它也用在我的 GNU 屏幕底线中。
由于使用的某些脚本可能需要一些时间来创建输出,因此我想将它们从输出集合中分离。所以我把它们放在一个while true; do script; sleep 1; done
循环中,如果尚未运行则启动该循环。
现在的问题是我不知道如何告诉调用脚本“真正”分离守护进程。