在window下通過idea開發,在代碼中需要spark,使用loacl模式,生成一些數據存放到hive中,使用的也是spark自帶的hive庫。
在idea 運行時報錯:
Error while instantiating 'org.apache.spark.sql.hive.HiveSessionState': java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: ---------
報錯信息可以看到是root想在/tmp/hive目錄下寫數據,而沒有權限。
首先本地是否有/tmp/hive目錄,再次確認此目錄的權限。
解決辦法:
從網上看到有帖子解決
- 系統中首先要配置hadoop環境和winutils工具
- 打開cmd命令提示符窗口,輸入以下命令:
winutils.exe ls F:\tmp\hive
winutils.exe chmod 777 F:\tmp\hive
winutils.exe ls F:\tmp\hive
3.再次運行idea程序,最終還是報錯
實際解決辦法:
- 系統中還是要安裝hadoop環境和winutils工具;
- 打開cmd窗口,切換到idea程序所在的盤符下。
我的開發路徑在e:\workspace下,所以在命令提示行下輸入->: e: (回車即切換到e盤下)
(命令提示符默認在C盤下操作,所以之前按照網上解決辦法都是在c盤下創建tmp\hive目錄,實際idea已經在E盤下創建了tmp\hive目錄,只是沒有權限) - 在通過winutils進行對e盤下的tmp\hive目錄賦權限即可。