I tried: hive -e "set user.name=$USER;create table foo2 ( name string);"
My warehouse table dir still got created by "root" (the user my thrift server is running as) drwxr-xr-x - root supergroup 0 2010-07-13 15:19 /user/pradeepk/hive/warehouse/foo2 -----Original Message----- From: Edward Capriolo [mailto:[email protected]] Sent: Tuesday, July 13, 2010 2:47 PM To: [email protected] Subject: Re: Thrift metastore server and dfs file owner On Tue, Jul 13, 2010 at 5:04 PM, Pradeep Kamath <[email protected]> wrote: > Hi, > > I suspect this is true but wanted to confirm: If I start a thrift > metastore service as user "joe" then all internal tables created will have > directories under the warehouse directory owned by "joe" regardless of the > actual user running the create table statement - is this correct? There is > no way for the thrift server to create the directory as the actual user? > However if thrift service is not used and the hive client directly works > against the metastore database, then the directories are created by the > actual user - is this correct? > > > > Thanks, > > Pradeep The hive web interface does this: queries.add("set hadoop.job.ugi=" + auth.getUser() + "," + auth.getGroups()[0]); queries.add("set user.name=" + auth.getUser()); You should be able to accomplish the same thing using set commands with the Thrift Server to impersonate. Regards, Edward
