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