我正在开发一个将数据加载到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中。
在hdfs中,删除/ tmp / hive目录==> " hdfs dfs -rm -r 的/ tmp /蜂巢"
在OS级别,删除dir / tmp / hive ==> rm -rf / tmp / hive
我的问题是,有人能告诉我这是否是解决问题的正确方法?