2016-05-12 86 views
0

我使用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,將其分配給一個變量的各種組合,但都失敗。

回答

1

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