Windowsでは、SparkはHiveを呼び出し、エラーを報告します:java.io.IOException:アクセスが拒否されました。



Windows Spark Calls Hive



エラーメッセージは次のとおりです。

18/04/27 10:36:33 INFO SessionState: Created local directory: C:/Users/GUOXIA~1.HDS/AppData/Local/Temp/c5c4c419-58fb-4b84-b84e-c6c972255f12_resources 18/04/27 10:36:33 INFO SessionState: Created HDFS directory: /tmp/hive/hdfs/c5c4c419-58fb-4b84-b84e-c6c972255f12 18/04/27 10:36:33 INFO SessionState: Created local directory: C:/Users/GUOXIA~1.HDS/AppData/Local/Temp/guoxiang/c5c4c419-58fb-4b84-b84e-c6c972255f12 18/04/27 10:36:33 INFO SessionState: Created HDFS directory: /tmp/hive/hdfs/c5c4c419-58fb-4b84-b84e-c6c972255f12/_tmp_space.db Exception in thread 'main' org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException: access denied. at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:106) at org.apache.spark.sql.hive.HiveExternalCatalog.databaseExists(HiveExternalCatalog.scala:194) at org.apache.spark.sql.internal.SharedState.externalCatalog$lzycompute(SharedState.scala:114) at org.apache.spark.sql.internal.SharedState.externalCatalog(SharedState.scala:102) at org.apache.spark.sql.hive.HiveSessionStateBuilder.externalCatalog(HiveSessionStateBuilder.scala:39) at org.apache.spark.sql.hive.HiveSessionStateBuilder.catalog$lzycompute(HiveSessionStateBuilder.scala:54) at org.apache.spark.sql.hive.HiveSessionStateBuilder.catalog(HiveSessionStateBuilder.scala:52) ...... Caused by: java.io.IOException: access denied. at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.createTempFile(File.java:2024) at org.apache.hadoop.hive.ql.session.SessionState.createTempFile(SessionState.java:818) at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:513) ... 34 more

分析:
/ tmpフォルダーのアクセス許可では、/ tmpの下にファイルを作成できないようです。そのため、最初に/ tmpのアクセス許可を変更してみてください。
hadoopの下でwinutilsツールを使用して、tmpパーミッションを変更します。

winutils chmod -R 777 /tmp winutils chmod -R 777 D:/tmp

そうでない場合
コードに追加:

System.setProperty('user.name', 'hdfs')

理由として、これは解決されました。 。 。 。 。 。明確ではありません