Hive - 如何打印 Hive 服务的类路径
Hive - How to print the classpath of a Hive service
我需要检查 Hive 服务的类路径以查看它在 运行 hive 查询时加载的 jar 的位置。
我想将 hive 的 parquet jar 更新为最新的 parquet jar 以读取新的 parquet 格式数据。
我已经更新了配置单元库位置中的 jars(/usr/hdp/2.5.XX/hive/lib/),但它仍在使用其他位置的旧 jars。
我尝试使用以下命令列出 jars 但没有输出。
hive>list jars;
我尝试使用
添加新的 jar
add jar <'jar file>
但它仍在挑选旧罐子。
有什么方法可以找出用于配置单元服务的类路径或 jar 吗?
要列出 jar 路径,请使用命令 list jars more details ;
并将 jar 添加到配置单元中的 hive.aux.jars.path 位置-site.xml (add auxiliary jar)
蜂巢样本-site.xml
<property>
<name>hive.aux.jars.path</name>
<value>file://localpath/yourjar.jar</value>
</property>
更新
检查配置单元 hive.aux.jars.path 属性 并查找提及的物理路径。
Add <jar> full path.
如果您确定它选择了旧版本的 Parquet,那么它一定存在于机器上,因此您可以在文件系统中查找所有 parquet jar:find / -name 'parquet-*.jar'
如果你想从计算机上可用的 jar 中检查它使用了哪个特定的 jar,你可以尝试使用 lsof
来达到这个目的。我将从 lsof | grep parquet | grep jar
开始,并在需要时进一步微调过滤。
运行 下面的命令获取配置单元命令位置
which hive
打开 /usr/bin/(您的配置单元位置)
下的 'hive' 文件
vi /usr/bin/hive
您应该会看到如下所示的内容。
备份配置单元文件并在 exec 之前的末尾添加 HADOOP_CLASSPATH 的 echo 命令,如下所示。
#!/bin/bash
if [ -d "/usr/hdp/2.5.0.0-1245/atlas/hook/hive" ]; then
if [ -z "${HADOOP_CLASSPATH}" ]; then
export HADOOP_CLASSPATH=/usr/hdp/2.5.0.0-1245/atlas/hook/hive/*
else
export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:/usr/hdp/2.5.0.0-1245/atlas/hook/hive/*
fi
fi
...
if [ -z "${HADOOP_CLASSPATH}" ]; then
export HADOOP_CLASSPATH=${HCATALOG_JAR_PATH}
else
export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${HCATALOG_JAR_PATH}
fi
####### Prints hadoop classpath
echo "Classpath=$HADOOP_CLASSPATH"
exec "${HIVE_HOME}/bin/hive.distro" "$@"
运行 显示类路径的 hive 命令。
通过将新的 parquet jar 位置添加到环境变量中解决了 parquet 问题 'HADOOP_CLASSPATH'
我需要检查 Hive 服务的类路径以查看它在 运行 hive 查询时加载的 jar 的位置。
我想将 hive 的 parquet jar 更新为最新的 parquet jar 以读取新的 parquet 格式数据。
我已经更新了配置单元库位置中的 jars(/usr/hdp/2.5.XX/hive/lib/),但它仍在使用其他位置的旧 jars。
我尝试使用以下命令列出 jars 但没有输出。
hive>list jars;
我尝试使用
添加新的 jaradd jar <'jar file>
但它仍在挑选旧罐子。
有什么方法可以找出用于配置单元服务的类路径或 jar 吗?
要列出 jar 路径,请使用命令 list jars more details ;
并将 jar 添加到配置单元中的 hive.aux.jars.path 位置-site.xml (add auxiliary jar)
蜂巢样本-site.xml
<property>
<name>hive.aux.jars.path</name>
<value>file://localpath/yourjar.jar</value>
</property>
更新
检查配置单元 hive.aux.jars.path 属性 并查找提及的物理路径。
Add <jar> full path.
如果您确定它选择了旧版本的 Parquet,那么它一定存在于机器上,因此您可以在文件系统中查找所有 parquet jar:find / -name 'parquet-*.jar'
如果你想从计算机上可用的 jar 中检查它使用了哪个特定的 jar,你可以尝试使用 lsof
来达到这个目的。我将从 lsof | grep parquet | grep jar
开始,并在需要时进一步微调过滤。
运行 下面的命令获取配置单元命令位置
which hive
打开 /usr/bin/(您的配置单元位置)
下的 'hive' 文件vi /usr/bin/hive
您应该会看到如下所示的内容。 备份配置单元文件并在 exec 之前的末尾添加 HADOOP_CLASSPATH 的 echo 命令,如下所示。
#!/bin/bash
if [ -d "/usr/hdp/2.5.0.0-1245/atlas/hook/hive" ]; then
if [ -z "${HADOOP_CLASSPATH}" ]; then
export HADOOP_CLASSPATH=/usr/hdp/2.5.0.0-1245/atlas/hook/hive/*
else
export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:/usr/hdp/2.5.0.0-1245/atlas/hook/hive/*
fi
fi
...
if [ -z "${HADOOP_CLASSPATH}" ]; then
export HADOOP_CLASSPATH=${HCATALOG_JAR_PATH}
else
export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${HCATALOG_JAR_PATH}
fi
####### Prints hadoop classpath
echo "Classpath=$HADOOP_CLASSPATH"
exec "${HIVE_HOME}/bin/hive.distro" "$@"
运行 显示类路径的 hive 命令。
通过将新的 parquet jar 位置添加到环境变量中解决了 parquet 问题 'HADOOP_CLASSPATH'