试图运行Spark Submit,Hadoop和其他命令行命令

问题描述:

我使用PowerShell来设置在Windows上运行的测试实例。当实例启动并运行时,它将运行一些命令来设置Hadoop,然后运行Spark作业。 从实例本身手动完成时,这一切都正常工作。我现在试图将这些命令转换为PowerShell。试图运行Spark Submit,Hadoop和其他命令行命令

& $env:HADOOP_HOME + "\bin\winutils.exe" chmod 777 /tmp/hive 
& $env:HADOOP_HOME + "\bin" hadoop namenode -format -force 

我收到的错误是::

&:术语“C

这两个例如与它不是可识别的小命令或功能等的消息失败: \ hadoop \ bin'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
在行:1字符:3

我又试图在包装报价,使用iex,将其分配给一个变量的各种组合,但都失败。

PowerShell中解释的$env:HADOOP_HOME作为要执行的命令,从而未能展开的值,因为文件夹不是cmdlet,函数,脚本文件,或可运行的程序。做串联的子表达式:

& ($env:HADOOP_HOME + "\winutils.exe") chmod 777 /tmp/hive 

,或者直接把环境变量在命令字符串:

& "$env:HADOOP_HOME\winutils.exe" chmod 777 /tmp/hive 
+0

你好,谢谢你的建议。我已经在shell中尝试了这两种方法,并且它们都给了我相同的错误。有没有可能是我失踪的其他东西? – null

+1

检查你的路径。从你以前的错误信息来看,'bin'目录似乎是'$ env:HADOOP_HOME'的一部分,所以你应该使用'“$ env:HADOOP_HOME \ winutils.exe”而不是'“$ env:HADOOP_HOME \ bin \ winutils.exe“'。 –

+0

绝对正确 - 正如一位需要拥抱的同事指出的那样! :D谢谢! – null