(在linux上)
vfhzx4xs1#
使用适当的64位winutils并设置权限winutils.exe chmod-r 777\tmp\hive
System.setProperty("hadoop.home.dir", "C:\\Users\\Hadoop_home") lazy val spark: SparkSession = { FileUtils.deleteDirectory(new File("c:\\tmp\\metastore_db")) FileUtils.deleteDirectory(new File("c:\\tmp\\spark-warehouse")) SparkSession.builder().config("spark.sql.warehouse.dir", "C:\\temp\\").master("local").appName("spark session for testing").enableHiveSupport().getOrCreate() }
System.setProperty("hadoop.home.dir", "C:\\Users\\Hadoop_home")
lazy val spark: SparkSession = {
FileUtils.deleteDirectory(new File("c:\\tmp\\metastore_db"))
FileUtils.deleteDirectory(new File("c:\\tmp\\spark-warehouse"))
SparkSession.builder().config("spark.sql.warehouse.dir", "C:\\temp\\").master("local").appName("spark session for testing").enableHiveSupport().getOrCreate()
}
yc0p9oo02#
hdfs上的root scratch dir:/tmp/hive应该是可写的。当前权限为:rwx--------嗨,下面是我在cdh5.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(); }
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();
根据异常,hdfs上的/tmp/hive应该是可写的,但是我们在本地模式下执行spark作业。这意味着在本地(linux)文件系统中没有对目录/tmp/hive的可写权限,而不是hdfs。所以我执行了下面的命令给予了许可。
$ sudo chmod -R 777 /tmp/hive
现在它对我有用。如果在集群模式下执行spark作业时遇到相同的问题,则应在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 get created in the root scratch directory </description> </property>
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
<description>Scratch space for Hive jobs</description>
</property>
<name>hive.scratch.dir.permission</name>
<value>777</value>
<description>The permission for the user-specific scratch directories that get created in the root scratch directory </description>
2条答案
按热度按时间vfhzx4xs1#
使用适当的64位winutils并设置权限
winutils.exe chmod-r 777\tmp\hive
yc0p9oo02#
hdfs上的root scratch dir:/tmp/hive应该是可写的。当前权限为:rwx--------
嗨,下面是我在cdh5.8的eclipse中执行的spark代码&runtimeexeption之上的代码
根据异常,hdfs上的/tmp/hive应该是可写的,但是我们在本地模式下执行spark作业。这意味着在本地(linux)文件系统中没有对目录/tmp/hive的可写权限,而不是hdfs。
所以我执行了下面的命令给予了许可。
现在它对我有用。
如果在集群模式下执行spark作业时遇到相同的问题,则应在hive conf文件夹的hive-site.xml文件中配置以下属性,然后重新启动hive服务器。