什么是正确的解决方法:HDFS上的root scratch目录:/ tmp / hive应该是可写的。目前的权限是:rwx ---

时间:2017-07-05 13:44:35

标签: apache-spark hive cloudera hortonworks-data-platform

我正在开发一个将数据加载到Hive表中的spark程序,我在Spark版本上执行此操作:2.0.2 最初我在spark-shell上执行了这两个步骤:

import org.apache.spark.sql.SparkSession
val spark = val spark = SparkSession.builder.master("local").appName("SparkHive").enableHiveSupport().config("hive.exec.dynamic.partition","true").config("hive.exec.dynamic.partition.mode","nonstrict").config("hive.metastore.warehouse.dir","/user/hive/warehouse").getOrCreate()

当我尝试将数据集从HDFS加载到spark时,我得到以下行的例外:

val partFile = spark.read.textFile("hdfs://quickstart:8020/user/cloudera/partfile")

例外:

The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwx---

在网上做了一些研究之后,我了解到只有HDFS才有权使用/ tmp / hive目录,甚至根用户也无法对其进行操作。我尝试了下面的命令,正如预测的那样,它没有用。

hadoop fs -chmod -R 777 /tmp/hive/

但是我执行了这些步骤,并且能够将文件加载到Spark中。

  1. 在hdfs中,删除/ tmp / hive目录==> " hdfs dfs -rm -r 的/ tmp /蜂巢"

  2. 在OS级别,删除dir / tmp / hive ==> rm -rf / tmp / hive

  3. 我的问题是,有人能告诉我这是否是解决问题的正确方法?

0 个答案:

没有答案