hadoop - How to load data into hive by using Java Program? -
i've tried loading data hive command line way. working fine way.
now want load data through java. purpose i've written code & i'm able create tables,databases,inserting values it, while using load command not working.
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 table "+tablename+""; system.out.println("load data successful"+sql); stmt.execute("load data local inpath 'file:/"+path+ "' overwrite table "+tablename+""); con.close(); } catch (sqlexception e) { // todo auto-generated catch block e.printstacktrace(); } giving issue,
caused by: org.apache.hadoop.hive.ql.security.authorization.plugin.hiveaccesscontrolexception: permission denied: principal [name=hadoop, type=user] not have following privileges operation load [[select, insert, delete, object ownership] on object [type=local_uri, name=file:/d:/dtcc/pig/dummy_data_main.tsv]] @ org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.sqlauthorizationutils.assertnodeniedpermissions(sqlauthorizationutils.java:414) @ org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.sqlstdhiveauthorizationvalidator.checkprivileges(sqlstdhiveauthorizationvalidator.java:96) @ org.apache.hadoop.hive.ql.security.authorization.plugin.hiveauthorizerimpl.checkprivileges(hiveauthorizerimpl.java:85) @ org.apache.hadoop.hive.ql.driver.doauthorizationv2(driver.java:725) @ org.apache.hadoop.hive.ql.driver.doauthorization(driver.java:518) @ org.apache.hadoop.hive.ql.driver.compile(driver.java:455) @ org.apache.hadoop.hive.ql.driver.compile(driver.java:303) @ org.apache.hadoop.hive.ql.driver.compileinternal(driver.java:1067) @ org.apache.hadoop.hive.ql.driver.compileandrespond(driver.java:1061) @ org.apache.hive.service.cli.operation.sqloperation.prepare(sqloperation.java:100) ... 15 more what tried: 1) give permission hadoop user on hdfs path of table 2) give permission table such select, insert, delete
please me resolve issue.
make sure following -
- if have kerberos security setup, don't forget use kinit
- user "hadoop" should have access write on folder (hive table location). -- hdfs path changing permission, "change permission" or "chmod" command not work. need run "hdfs dfs -setfacl -r -m user::rwx ".
- also, make sure table location has same parent directory other tables able create. [some times, admin can restrict create table in other location ].
Comments
Post a Comment