在IDEA中運作Spark SQL讀取hdfs檔案時報
java.io.IOException: (null) entry in command string: null ls -F F:\tmp\hive
的錯,
或者是報
Exception in thread "main" org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: ---------;
這樣的錯
我的情況是 spark在虛拟機中安裝的 Windows上沒有安。
第一個錯誤主要原因是 :
1、Windows上沒有配hadoop的環境變量。
2、Spark初始化Hive上下文所需的winutils.exe檔案丢失
3、hadoop bin目錄下的 hadoop.dll 檔案丢失
解決方案:
1、在Windows上配置Hadoop的運作環境
打開我的電腦進階系統設定中的環境變量設定。
這裡填寫自己hadoop的安裝路徑!
在Path中加入bin目錄和sbin目錄
2、下載下傳winutils 檔案
點選下載下傳即可
3、https://github.com/SweetInk/hadoop-common-2.7.1-bin中下載下傳hadoop.dll
4、最後一種辦法:重新下載下傳hadoop解壓
第二個錯誤的解決方案:
1、win+r cmd 進入系統操作界面
2、在黑界面輸入:
echo%HADOOP_HOME%
檢視自己是否配置好了hadoop的環境變量
3、在黑界面輸入:
%HADOOP_HOME%\bin\winutils.exe chmod 777 F:\tmp\hive
這裡填寫自己的\tmp\hive 的準确目錄,我的是在f盤下
4、在黑界面輸入:
%HADOOP_HOME%\bin\winutils.exe ls F:\tmp\hive
檢視權限
變成這樣就可以了。
5、重新開機自己的IDEA 運作代碼即可。