当前位置: 首页 > 知识库问答 >
问题:

不能管道两个hadoop命令?

司毅庵
2023-03-14

我想运行以下命令:

hadoop fs -ls hdfs:///logs/ | grep -oh "/[^/]*.gz" | grep -oh "[^/]*.gz" | hadoop fs -put - hdfs:///unzip_input/input
ssh -i /home/USER/keypair.pem hadoop@ec2-XXXX.compute-1.amazonaws.com hadoop fs -ls hdfs:///logs/ | grep -oh "/[^/]*.gz" | grep -oh "[^/]*.gz" | hadoop fs -put - hdfs:///unzip_input/input
zsh: command not found: hadoop
ssh -i /home/USER/keypair.pem hadoop@ec2-XXXX.compute-1.amazonaws.com hadoop fs -ls hdfs:///logs/ | grep -oh "/[^/]*.gz" | grep -oh "[^/]*.gz"

通过一些搜索,我发现这可能是由于没有设置JAVA_HOME的错误,但它在主节点的~/.bashrc中设置正确

hadoop clustter是一个Amazon Elastic Map Reduce集群。

共有1个答案

孙佐
2023-03-14

只有管道命令链的第一个命令才能在reomte主机上执行。其余的在本地发生在您的计算机上。因此,当然,如果您没有安装hadoop,zsh将打印出一条错误消息(否则,它只会将其放到本地hadoop上,这可能不是您想要的。

要将所有命令传递给ssh,可以将它们放在引号“”或单引号“”中:

ssh -i /home/USER/keypair.pem hadoop@ec2-XXXX.compute-1.amazonaws.com 'hadoop fs -ls hdfs:///logs/ | grep -oh "/[^/]*.gz" | grep -oh "[^/]*.gz" | hadoop fs -put - hdfs:///unzip_input/input'
 类似资料:
  • 我想通过管道传输我的hadoop流作业。例如,我运行了一个命令hadoop jarhadoop-streaming.jar-mappermap1.pyreducer.py-inputxx输出 /output1 但是我想使用第一步的输出作为第二步mapduce作业的输入,而不存储在hdfs中,也许输出为标准输出。有没有像linux管道一样的东西?比如hadoop jarhadoop-streamin

  • 主要内容:使用命名管道双向通信管道是用于相关过程之间的通信。 我们是否可以使用管道进行不相关的进程通信,比方说,我们要从一个终端执行客户端程序,从另一个终端执行服务器程序? 答案是否定的。那么怎样才能实现不相关的进程通信,简单的答案就是使用 命名管道。 即使这适用于相关的进程,但是使用命名管道进行相关的进程通信没有任何意义。 我们使用一个管道进行单向通信,两个管道进行双向通信。 命名管道是否适用相同的条件。 答案是否定的,我们

  • stephen@stephens-MacBook-Pro ~ % find ./ -name 'charles*'|xargs rm -rf stephen@stephens-MacBook-Pro ~ % find ./ -name 'charles*' .//Library/Application Support/Charles/ca/charles-proxy-ssl-proxying-ce

  • 这是take II,前几周我发了帖子,我的问题被搁置,我调整了我的文本,但无法得到评论,系统关闭了原来的帖子。 服务器端:只读-服务器打开管道,然后定期检查是否有内容(即不在流末尾)并读取信息。此检查必须以轮询为基础,因为只有在轮询期间,才有有效的上下文来传递数据。。 客户端:仅写-打开管道、写入管道、关闭(Client.exe多次调用,生命周期短,下面的代码是测试代码),例如,其他一些脚本将“使

  • 问题内容: 如果可能,我想通过管道将两个Node.js流合并为一个。我正在使用转换流。 换句话说,我希望我的图书馆归还给人们使用。例如,他们可以写: 在内部,我使用的是第三方,它可以完成一些工作,并插入包含在我自己的逻辑中。因此,以上内容将转换为: 我可以那样做吗?我已经尝试过了,但这显然行不通。 为了与进行类比,假设我想编写一个程序来检查某个流()的最后一行中是否存在该字母,我可以创建一个she

  • 问题内容: 我在2.32.2版的管道中使用Jenkinsfile。 由于各种原因,我想从pom中提取版本字符串。我希望我不必添加Maven帮助插件并使用评估。 我很快想到了一个sed表达式,使它脱离使用管道的pom,并在执行程序的jenkins工作区中的命令行上工作。 可能可以对其进行优化,但是我想了解为什么管道似乎在管道sh命令上失败。我玩过各种字符串格式,目前使用的是美元斜线字符串。 管道步骤