1. ホーム
  2. hadoop

[解決済み] Hive - Hiveサービスのクラスパスを印刷する方法

2022-02-17 10:44:10

質問

ハイブ クエリの実行中にロードされる jar の場所を確認するために、ハイブ サービスのクラスパスをチェックする必要があります。

新しいパーケット形式のデータを読み込むために、hiveのパーケットjarを最新のものに更新したいのですが。

hiveのlibの場所(/usr/hdp/2.5.XX/hive/lib/)のjarを更新しましたが、他の場所の古いjarをまだ使用しています。

以下のコマンドでjarをリストアップしてみましたが、何も出力されません。

<ブロッククオート

hive>list jars;

を使用して新しいjarを追加してみました。

jarを追加する <'jar file>

が、まだ古いjarが選ばれています。

ハイブサービスに使用されているクラスパスまたはジャーを見つける方法はありますか?

解決方法を教えてください。

以下のコマンドを実行し、ハイブコマンドの場所を取得します。

which hive

usr/bin/(あなたのハイブの場所)の下にある'hive'ファイルを開いてください。

vi /usr/bin/hive

以下のように表示されるはずです。 ハイブファイルのバックアップを取り、以下のように実行前の最後に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コマンドを実行して、クラスパスを表示します。

環境変数 'HADOOP_CLASSPATH' に新しい parquet jar の場所を追加することで、parquet の問題は解決されました。