天天看點

在IDEA中運作SparkSQL讀取hdfs檔案報java.io.IOException: (null) entry in command string: null ls -F F:\tmp\hive

在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的運作環境

打開我的電腦進階系統設定中的環境變量設定。

在IDEA中運作SparkSQL讀取hdfs檔案報java.io.IOException: (null) entry in command string: null ls -F F:\tmp\hive

這裡填寫自己hadoop的安裝路徑!

在IDEA中運作SparkSQL讀取hdfs檔案報java.io.IOException: (null) entry in command string: null ls -F F:\tmp\hive

在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

檢視權限

在IDEA中運作SparkSQL讀取hdfs檔案報java.io.IOException: (null) entry in command string: null ls -F F:\tmp\hive

變成這樣就可以了。

5、重新開機自己的IDEA 運作代碼即可。

繼續閱讀