35

リンクhttp://www.youtube.com/watch?v=Dqo1ahdBK_Aに示されているように Hive を構成しましたが、Hive でテーブルを作成しているときに次のエラーが発生します。hadoop-1.2.1 と hive-0.12.0 を使用しています。

hive> create table employee(emp_id int,name string,salary double);
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
4

17 に答える 17

47

メタストアに問題があるようです。デフォルトの Hive メタストア組み込み derby を使用している場合。ロックファイルは、異常終了の場合に存在します。そのロックファイルを削除すると、この問題は解決します

rm   metastore_db/*.lck
于 2014-03-28T14:08:57.433 に答える
10

これは、前述の sachinjose のようなメタストアの問題か、接続の問題である可能性があります。次のように、デバッグ モードで Hive コンソールを実行します。

hive -hiveconf hive.root.logger=DEBUG,console

次に、次のような単純なクエリを実行して、show tables;何が起こるかを確認します。namenode を再起動した後、この問題に遭遇しました。これは、構成ファイルに間違ったホストが設定されていることが原因でした (ec2 は、再起動時に新しいプライベート IP/ホスト名を生成します)。

于 2014-04-23T10:04:11.600 に答える
2
hive> show databases;
FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

この問題を解決するには、まず Hadoop サービスを開始します。

$ start-all.sh

それから私は走ります

hive> show database;

それは私にとってはうまくいきます。

于 2015-07-19T13:28:07.177 に答える
1

答えはhttp://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/5.0/CDH5-Installation-Guide/cdh5ig_hive_schema_tool.htmlにあります。

スキーマ チェックを抑制し、メタストアがスキーマを暗黙的に変更できるようにするには、hive-site.xml で hive.metastore.schema.verification 構成プロパティを false に設定する必要があります。

于 2014-07-22T13:35:15.097 に答える
1
rm metastore_db/*.lck

それは私にとってもうまくいきます。home/userディレクトリにあります。locate次のコマンドを 使用して見つけることができます。locate metastore_db

ロック ファイルを削除したら、現在のセッションを閉じます。新しいセッションでハイブ シェルを呼び出す

于 2015-07-01T03:07:46.330 に答える
1

hive-site.xml ファイルで hive.metastore.schema.verification=false を作成すると、このエラーは削除されます。私の場合、それはうまく機能しています。

于 2016-01-13T03:58:04.530 に答える
0

ローカル マシンにある場合は、ハイブ シェル/セッションで開いている別のターミナルがあるようです。埋め込まれた derby データベースを使用するセッションは 1 つだけです。他のすべてのハイブ セッションを閉じて、試してください。

于 2015-07-16T11:49:14.470 に答える
0

hive-site.xml のコードを削除し、このコードを hive-site.xml に貼り付けます。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=/home/hadoop/Desktop/apache-hive-2.1.1-bin/metastore_db;create=true</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>hive.metastore.uris</name>
<value/>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.PersistenceManagerFactoryClass</name>
<value>org.datanucleus.api.jdo.JDOPersistenceManagerFactory</value>
<description>class implementing the jdo persistence</description>
</property>
</configuration>
于 2017-02-03T04:10:53.833 に答える
-1

私は同じ問題に直面していました-それを解決するために以下の手順を使用しました:

  1. ファイル hive-site.xml を作成し、詳細を入力します (Local/Prod モードの場合)。以下の場所が存在することを確認してください /home/hadoop/bishm/warehouse

    例:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/home/hadoop/bhishm/warehouse</value>
        <description>
        Local or HDFS directory where Hive keeps table contents.
        </description>
    </property>
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
        <description>
        Use false if a production metastore server is used.
        </description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:derby:;databaseName=/home/hadoop/bhishm/warehouse/metastore_db;create=true</value>
        <description>
        The JDBC connection URL.
        </description>
    </property>
    </configuration>
    
  2. hive-env.sh を編集します。-> メモリ使用量を減らした後、Java パスを最初の行として追加します。

    例:

    # Hive Client memory usage can be an issue if a large number of clients
    # are running at the same time. The flags below have been useful in 
    # reducing memory usage:
    
    # The java implementation to use.  Required.
    
    export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
    
  3. ハイブ クエリを実行します。

于 2016-02-14T17:50:23.430 に答える