我已使用hdfs命令更改了权限。仍然显示相同的错误。
HDFS上的root scratch dir:/ tmp / hive应该是可写的。当前权限为:-wx ------
我正在执行的Java程序。
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
import org.apache.hive.jdbc.HiveDriver;
public class HiveCreateDb {
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
public static void main(String[] args) throws Exception {
// Register driver and create driver instance
Class.forName(driverName);
/* try {
Class.forName(driverName);
} catch(ClassNotFoundException e) {
print("Couldn't find Gum");
} */ // get connection
Connection con = DriverManager.getConnection("jdbc:hive://", "", "");
Statement stmt = con.createStatement();
stmt.executeQuery("CREATE DATABASE userdb");
System.out.println("Database userdb created successfully.");
con.close();
}
}
它为连接配置单元提供了运行时错误。
线程中的异常" main" java.lang.RuntimeException:java.lang.RuntimeException:HDFS上的root scratch dir:/ tmp / hive应该是可写的。目前的权限是:rwx ------
答案 0 :(得分:5)
试试这个
hadoop fs -chmod -R 777 /tmp/hive/
;
我在运行配置单元查询时遇到类似问题,使用-R
已解决它。
答案 1 :(得分:3)
只是添加到之前的答案,如果您的用户名是' cloudera' (您可以使用cloudera manager / cloudera quickstart作为您的实施平台),您可以执行以下操作:
sudo -u hdfs hadoop fs -chmod -R 777 / tmp / hive /;
请记住,在hadoop,' hdfs'是超级用户,而不是&root;' root'或者' cloudera'。
答案 2 :(得分:1)
我们正在本地模式下执行spark工作。这意味着本地(linux)机器中的目录/ tmp / hive没有可写权限。
所以执行chmod -R 777 /tmp/hive
。这解决了我的问题。
答案 3 :(得分:0)
不要做chmod(777)......正确的是(733):
Hive 0.14.0及更高版本:Hive作业的HDFS root scratch目录,使用write all(733)权限创建。对于每个连接用户,使用$ {hive.scratch.dir.permission}创建HDFS临时目录$ {hive.exec.scratchdir}。
尝试使用hdfs用户执行此操作:
hdfs dfs -mkdir /tmp/hive
hdfs dfs -chown hive /tmp/hive/$HADOOP_USER_NAME
hdfs dfs -chmod 733 /tmp/hive/$HADOOP_USER_NAME
hdfs dfs -mkdir /tmp/hive/$HADOOP_USER_NAME
hdfs dfs -chown $HADOOP_USER_NAME /tmp/hive/$HADOOP_USER_NAME
hdfs dfs -chmod 700 /tmp/hive/$HADOOP_USER_NAME
这样可行,您可以使用(来自配置单元)更改scratchdir路径:
set hive.exec.scratchdir=/somedir_with_permission/subdir...
更多信息:https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration