HDFS上的根临时目录:/ tmp / hive应该可写Spark应用程序错误

时间:2019-02-22 16:56:22

标签: apache-spark hive hdfs

我已经创建了一个使用Hive metastore的Spark应用程序,但是在外部Hive表创建过程中,执行该应用程序时会出现这样的错误(Spark驱动程序日志):

ls -l /tmp
...
drwxrwxr-x    1 1001     1001          4096 Feb 22 16:47 hive

我使用用于K8的Spark运算符运行该应用程序。 因此,我检查了Spark应用程序的目录ob driver pod的权限:

{{1}}

如果我尝试更改权限,则不会产生任何效果。 我也在K8中运行Hive Metastore和HDFS。

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

这是一个常见错误,可以通过在另一个位置创建目录并指向火花使用新目录的方式来解决。

步骤1:/tmp/tmpops上创建一个名为tmpops的新目录

步骤2:授予目录chmod -777 /tmp/tmpops的权限         注意:-777用于本地测试。如果您正在使用敏感数据,请确保将此路径添加到安全组,以避免意外的数据泄漏和安全漏洞。

步骤3:在spark应用所引用的hive-site.xml中添加以下属性:

  <property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/tmpops</value>
  </property>

执行此操作后,除非有人删除该目录,否则错误将不再出现。

答案 1 :(得分:0)

我在窗口10中遇到了同样的问题,下面的解决方案帮助我解决了这个问题。

以下步骤解决了我的问题

  1. 在管理模式下打开命令提示符
  2. winutils.exe chmod 777 / tmp / hive
  3. 打开Spark-Shell --master本地[2]