hive-如何打印配置单元服务的类路径

vsikbqxv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(465)

我需要检查配置单元服务的类路径,以查看它在运行配置单元查询时加载的jar的位置。
我想更新配置单元的Parquet罐到最新的Parquet罐以读取新的Parquet格式数据。
我已经更新了hivelib位置(/usr/hdp/2.5.xx/hive/lib/)中的jar,但是它仍然使用其他位置的旧jar。
我尝试在下面的命令中列出jar,但没有输出。
配置单元>列表jar;
我试着用
添加jar<'jar文件>
但它仍在挑选旧jar。
有没有办法找出用于配置单元服务的类路径或jar?

dced5bon

dced5bon1#

运行下面的命令以获取配置单元命令位置

which hive

打开/usr/bin/(您的配置单元位置)下的“配置单元”文件

vi /usr/bin/hive

你应该看到下面这样的东西。对配置单元文件进行备份,并在exec之前的末尾为hadoop\u类路径添加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命令以显示类路径。
通过向环境变量'hadoop\u classpath'添加新的Parquetjar位置,解决了Parquet问题

y53ybaqx

y53ybaqx2#

如果您确定它使用的是旧版本的parquet,那么它必须存在于计算机上,因此您可以在文件系统中查找所有parquet jar: find / -name 'parquet-*.jar' 如果您想从计算机上可用的jar中检查它使用的特定jar,您可以尝试使用 lsof 为此目的。我会从 lsof | grep parquet | grep jar 如果需要,进一步微调过滤。

1aaf6o9v

1aaf6o9v3#

要列出jar路径,请使用命令list jarsmore details;
并将jar添加到hive-site.xml中的hive.aux.jars.path位置(add auxiliary jar)
hive-site.xml示例

<property>
<name>hive.aux.jars.path</name>
<value>file://localpath/yourjar.jar</value>
</property>

更新
检查hive hive.aux.jars.path属性并查找物理路径。

Add <jar> full path.

相关问题