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

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

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

dced5bon

dced5bon1#

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

  1. which hive

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

  1. vi /usr/bin/hive

你应该看到下面这样的东西。对配置单元文件进行备份,并在exec之前的末尾为hadoop\u类路径添加echo命令,如下所示。

  1. # !/bin/bash
  2. if [ -d "/usr/hdp/2.5.0.0-1245/atlas/hook/hive" ]; then
  3. if [ -z "${HADOOP_CLASSPATH}" ]; then
  4. export HADOOP_CLASSPATH=/usr/hdp/2.5.0.0-1245/atlas/hook/hive/*
  5. else
  6. export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:/usr/hdp/2.5.0.0-1245/atlas/hook/hive/*
  7. fi
  8. fi
  9. ...
  10. if [ -z "${HADOOP_CLASSPATH}" ]; then
  11. export HADOOP_CLASSPATH=${HCATALOG_JAR_PATH}
  12. else
  13. export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${HCATALOG_JAR_PATH}
  14. fi
  15. ####### Prints hadoop classpath
  16. echo "Classpath=$HADOOP_CLASSPATH"
  17. 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示例

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

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

  1. Add <jar> full path.

相关问题