[ https://issues.apache.org/jira/browse/HIVE-7658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14093032#comment-14093032 ]
Venki Korukanti commented on HIVE-7658: --------------------------------------- Hive uses ClassLoader.getResource("hive-site.xml") for finding the path to hive-site.xml file. ClassLoader is retrieved using Thread.currentThread().getContextClassLoader() which returns a chain of class loaders. One of the ClassLoaders in the chain is sun.misc.Launcher$AppClassLoader. This particular ClassLoader treats the empty entry in ClassPath (example: /path/to/jar1.jar::/path/to/jar2) as current working directory of the process (see [here|https://community.oracle.com/thread/2456122?start=0&tstart=0]). If you look at the classpath of the Hive process, there is one such empty entry after the hadoop jars and before hive conf dir and hive jars. As the empty entry is before hive conf directory, ClassLoader picks up the first occurrence of hive-site.xml in current working directory. Looking at the Hive scripts, adding empty path is an issue in hive scripts it self. Following line in {{bin/hive}} script causes an extra ":" before the hive constructed classpath when HADOOP_CLASSPATH is empty. "hadoop" scripts adds another ":" to its classpath and appends given hive classpath. {code} export HADOOP_CLASSPATH="${HADOOP_CLASSPATH}:${CLASSPATH}" {code} > Hive search order for hive-site.xml when using --config option > -------------------------------------------------------------- > > Key: HIVE-7658 > URL: https://issues.apache.org/jira/browse/HIVE-7658 > Project: Hive > Issue Type: Bug > Components: CLI > Affects Versions: 0.13.0 > Environment: Red Hat Enterprise Linux Server release 5.9 (Tikanga) > Hive 0.13.0-mapr-1406 > Subversion git://rhbuild/root/builds/opensource/node/ecosystem/dl/hive -r > 4ff8f8b4a8fc4862727108204399710ef7ee7abc > Compiled by root on Tue Jul 1 14:18:09 PDT 2014 > From source with checksum 208afc25260342b51aefd2e0edf4c9d6 > Reporter: James Spurin > Priority: Minor > > When using the hive cli, the tool appears to favour a hive-site.xml file in > the current working directory even if the --config option is used with a > valid directory containing a hive-site.xml file. > I would have expected the directory specified with --config to take > precedence in the CLASSPATH search order. > Here's an example - > /home/spurija/hive-site.xml = > <configuration> > <property> > <name>hive.exec.local.scratchdir</name> > <value>/tmp/example1</value> > </property> > </configuration> > /tmp/hive/hive-site.xml = > <configuration> > <property> > <name>hive.exec.local.scratchdir</name> > <value>/tmp/example2</value> > </property> > </configuration> > -bash-4.1$ diff /home/spurija/hive-site.xml /tmp/hive/hive-site.xml > 23c23 > < <value>/tmp/example1</value> > --- > > <value>/tmp/example2</value> > { check the value of scratchdir, should be example 1 } > -bash-4.1$ pwd > /home/spurija > -bash-4.1$ hive > Logging initialized using configuration in > jar:file:/opt/mapr/hive/hive-0.13/lib/hive-common-0.13.0-mapr-1405.jar!/hive-log4j.properties > hive> set hive.exec.local.scratchdir; > hive.exec.local.scratchdir=/tmp/example1 > { run with a specified config, check the value of scratchdir, should be > example2 … still reported as example1 } > -bash-4.1$ pwd > /home/spurija > -bash-4.1$ hive --config /tmp/hive > Logging initialized using configuration in > jar:file:/opt/mapr/hive/hive-0.13/lib/hive-common-0.13.0-mapr-1405.jar!/hive-log4j.properties > hive> set hive.exec.local.scratchdir; > hive.exec.local.scratchdir=/tmp/example1 > { remove the local config, check the value of scratchdir, should be example2 > … now correct } > -bash-4.1$ pwd > /home/spurija > -bash-4.1$ rm hive-site.xml > -bash-4.1$ hive --config /tmp/hive > Logging initialized using configuration in > jar:file:/opt/mapr/hive/hive-0.13/lib/hive-common-0.13.0-mapr-1405.jar!/hive-log4j.properties > hive> set hive.exec.local.scratchdir; > hive.exec.local.scratchdir=/tmp/example2 > Is this expected behavior or should it use the directory supplied with > --config as the preferred configuration? -- This message was sent by Atlassian JIRA (v6.2#6252)