[
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)