1
我試過用命令行方式將數據加載到配置單元中。它的工作方式很好。如何使用Java程序將數據加載到配置單元中?
現在我想通過Java加載數據。所以爲此目的,我寫了代碼&我可以創建表,數據庫,插入值,但使用加載命令時,它不工作。
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
private static String databaseURL = "jdbc:hive2://server_name:10001/test";
private static String userName = "<hadoop_user";
private static String password = "<password>";
private static Connection con = null;
private final static Logger log =
private static String dbName="db_name",
tableName="table_name",
path = "";
private void loadData(String path,String tableName) {
// create statement
Statement stmt;
try {
stmt = con.createStatement();
String sql = "LOAD DATA LOCAL INPATH 'file:/"+path+ "' OVERWRITE INTO TABLE "+tableName+"";
System.out.println("Load Data into successful"+sql);
stmt.execute("LOAD DATA LOCAL INPATH 'file:/"+path+ "' OVERWRITE INTO TABLE "+tableName+"");
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
給這個問題,
Caused by: org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAccessControlException: Permission denied: Principal [name=hadoop, type=USER] does not have following privileges for operation LOAD [[SELECT, INSERT, DELETE, OBJECT OWNERSHIP] on Object [type=LOCAL_URI, name=file:/D:/DTCC/Pig/Dummy_data_Main.tsv]]
at org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLAuthorizationUtils.assertNoDeniedPermissions(SQLAuthorizationUtils.java:414)
at org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizationValidator.checkPrivileges(SQLStdHiveAuthorizationValidator.java:96)
at org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerImpl.checkPrivileges(HiveAuthorizerImpl.java:85)
at org.apache.hadoop.hive.ql.Driver.doAuthorizationV2(Driver.java:725)
at org.apache.hadoop.hive.ql.Driver.doAuthorization(Driver.java:518)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:455)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:303)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1067)
at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1061)
at org.apache.hive.service.cli.operation.SQLOperation.prepare(SQLOperation.java:100)
... 15 more
我的嘗試: 1)我給所有權限的Hadoop用戶表 2的HDFS路徑)我給所有的權限表,如SELECT上, INSERT,DELETE
請幫我解決這個問題。
http://stackoverflow.com/questions/31825086/mismatched-input-row-expecting-eof-error-while-creating-hive-table 請參考上面的問題和回答我 – nani