HDFS上的root scratch dir:/ tmp/hive应该是可写的.当前权限是:rwx --------
嗨,我在CDH 5.8的Eclipse中执行以下Spark代码并获得RuntimeExeption
public static void main(String[] args) {
final SparkConf sparkConf = new SparkConf().setMaster("local").setAppName("HiveConnector");
final JavaSparkContext sparkContext = new JavaSparkContext(sparkConf);
SQLContext sqlContext = new HiveContext(sparkContext);
DataFrame df = sqlContext.sql("SELECT * FROM test_hive_table1");
//df.show();
df.count();
}
Run Code Online (Sandbox Code Playgroud)
根据Exception / tmp/hive,HDFS应该是可写的,但是我们在本地模式下执行spark作业.这意味着本地(linux)文件系统中的目录/ tmp/hive没有可写权限,而不是HDFS.
所以我执行了以下命令以获得许可.
$ sudo chmod -R 777 /tmp/hive
Run Code Online (Sandbox Code Playgroud)
现在它对我有用.
如果在群集模式下执行spark job期间遇到同样的问题,则应在hive conf文件夹的hive-site.xml文件中配置以下属性,然后重新启动hive服务器.
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
<description>Scratch space for Hive jobs</description>
</property>
<property>
<name>hive.scratch.dir.permission</name>
<value>777</value>
<description>The permission for the user-specific scratch directories that …Run Code Online (Sandbox Code Playgroud)