7

Hive を使用して、テーブル ストア シーケンス ファイルを作成します。行形式は serder クラスmyserde.TestDeserializerhiveserde-1.0.jar

コマンド ラインで、次のコマンドを使用して jar ファイルを追加します。

ハイブ ADD JAR hiveserde-1.0.jar

次に、テーブルを作成すると、ファイルが正常に読み込まれます。

しかし今、それを実行して、mysql jdbc を使用してクライアント上にテーブルを作成したいと考えています。エラーは次のとおりです。

SerDe: myserde.TestDeserializer が存在しません。

実行方法は?ありがとう

4

4 に答える 4

11

したがって、いくつかのオプションがあります。それらすべてで、jarはHiveがインストールされているクラスターに存在する必要があります。もちろん、JDBCクライアントコードは、クラスタ内外のどこからでも実行できます。

オプション1:他のHQLコマンドを実行する前に、HQLクエリを発行します。

ADD JAR hiveserde-1.0.jar

オプション2: hive- site.xmlを更新して、 hive.aux.jars.pathプロパティをjarhiveserde-1.0.jarへの完全なパスに設定できます。

于 2012-12-26T12:48:14.347 に答える
1

hive-env.sh に移動し、ファイルの末尾に追加します。

export HIVE_AUX_JARS_PATH=$HIVE_AUX_JARS_PATH:/<path-to-jar>

その後、このファイルを入手できます。理想的ではありませんが、うまくいきます。

于 2015-05-11T11:33:19.017 に答える
0

はい、これは少し混乱する可能性があります。Hive がクラスターから読み取っている時間の半分と、ローカル ファイル システム (マシン Hive サーバーがインストールされている) からの残りの半分のようです。

この単純な問題を解決するには、.jar ファイルを Hive サーバー マシンにコピーします。たとえば、Hive クエリでこれを参照できます。

add jar /tmp/json-serde.jar;

create table tweets (
    name string,
    address1 string,
    address2 string,
    address3 string,
    postcode string
)
...

そして、次の問題に進みます ;)

于 2015-06-26T22:50:37.753 に答える
0

CLI で行うのではなく、jdbc でテーブルを作成したいということですか? その場合、jdbc コードを実行するときにクラスパスに jar を追加する必要があります。

于 2012-12-26T01:56:57.800 に答える