2016-05-23 7 views
0

Spark ThriftServerを実行しているため、Hiveテーブルに保存したデータに対してSpark SQLコマンドを実行できます。Spark Thriftserverが正しいHiveデータベースに接続していません

私は私の現在のテーブルを表示するbeelineを起動します。

[email protected]~$ beeline 
!connect jdbc:hive2://mn:10000 
show tables; 
+------------+--------------+--+ 
| tableName | isTemporary | 
+------------+--------------+--+ 
+------------+--------------+--+ 

出力にはテーブルが私のデータベースに存在しないことを示しています。私は(非推奨)CLI hiveを使用した場合

はしかし、私は別の出力を得る:

[email protected]:~$ hive 
Logging initialized using configuration in jar:file:/opt/cloudera/parcels/CDH-5.4.4-1.cdh5.4.4.p0.4/jars/hive-common-1.1.0-cdh5.4.4.jar!/hive-log4j.properties 
WARNING: Hive CLI is deprecated and migration to Beeline is recommended. 
hive> show tables; 
OK 
table_1 
table_2 
Time taken: 1.683 seconds, Fetched: 6 row(s) 

私はHDFSは私のハイブストア内のテーブルがあることを示しているようビーラインからの出力は、間違っている知っています。私は私のスパークThriftserver(私はデータを照会するタブローを使用しています)に接続するとき、私は私の現在のスキーマ内のすべての表を参照してくださいしようとすると、

[email protected]:~$ hadoop fs -ls /user/hive/warehouse 
Found 9 items 
drwxrwxrwt - cloudera hive   0 2015-07-30 13:20 /user/hive/warehouse/table_1 
drwxrwxrwt - cloudera hive   0 2015-08-04 16:28 /user/hive/warehouse/table_2 

はまた、何のテーブルが現れません。

beeline CLIとSpark Thriftserverが共有する構成上の問題があるような気がしますが、それが何であるか分かりません。 ThriftserverがローカルのHiveインストールを指していることは間違いありませんが、Thriftserverを介してテーブルを表示できる唯一の時間は、(HDFSに格納されているテーブルではなく)マシンにローカルに格納されているテーブルを指していたからです。私はビーラインの内側にこれらのテーブルを作成していたので、ビーラインが正しく設定されているとは思わないので、テーブルはHDFSではなくローカルで作成されていました。私はSparkSQLが動作しているポートにBeelineを接続していたので、その2つのソフトウェアが同じ問題を抱えている理由を説明していると思います。

Thriftserverが正しいHiveインストールで動作するように設定する必要のある設定は何ですか?私はハイブコマンドがいくつかの設定ファイルを読み込むことに気付きました。それには答えが含まれていましたか?

ご協力いただきまして誠にありがとうございます。

EDIT:

<?xml version="1.0" encoding="UTF-8"?> 

<!--Autogenerated by Cloudera Manager--> 
<configuration> 
    <property> 
    <name>hive.metastore.uris</name> 
    <value>thrift://w7:9083</value> 
    </property> 
    <property> 
    <name>hive.metastore.client.socket.timeout</name> 
    <value>300</value> 
    </property> 
    <property> 
    <name>hive.metastore.warehouse.dir</name> 
    <value>/user/hive/warehouse</value> 
    </property> 
    <property> 
    <name>hive.warehouse.subdir.inherit.perms</name> 
    <value>true</value> 
    </property> 
    <property> 
    <name>hive.enable.spark.execution.engine</name> 
    <value>false</value> 
    </property> 
    <property> 
    <name>hive.conf.restricted.list</name> 
    <value>hive.enable.spark.execution.engine</value> 
    </property> 
    <property> 
    <name>mapred.reduce.tasks</name> 
    <value>-1</value> 
    </property> 
    <property> 
    <name>hive.exec.reducers.bytes.per.reducer</name> 
    <value>67108864</value> 
    </property> 
    <property> 
    <name>hive.exec.copyfile.maxsize</name> 
    <value>33554432</value> 
    </property> 
    <property> 
    <name>hive.exec.reducers.max</name> 
    <value>1099</value> 
    </property> 
    <property> 
    <name>hive.metastore.execute.setugi</name> 
    <value>true</value> 
    </property> 
    <property> 
    <name>hive.support.concurrency</name> 
    <value>true</value> 
    </property> 
    <property> 
    <name>hive.zookeeper.quorum</name> 
    <value>mn</value> 
    </property> 
    <property> 
    <name>hive.zookeeper.client.port</name> 
    <value>2181</value> 
    </property> 
    <property> 
    <name>hbase.zookeeper.quorum</name> 
    <value>mn</value> 
    </property> 
    <property> 
    <name>hbase.zookeeper.property.clientPort</name> 
    <value>2181</value> 
    </property> 
    <property> 
    <name>hive.zookeeper.namespace</name> 
    <value>hive_zookeeper_namespace_hive</value> 
    </property> 
    <property> 
    <name>hive.cluster.delegation.token.store.class</name> 
    <value>org.apache.hadoop.hive.thrift.MemoryTokenStore</value> 
    </property> 
    <property> 
    <name>hive.server2.enable.doAs</name> 
    <value>true</value> 
    </property> 
    <property> 
    <name>hive.server2.use.SSL</name> 
    <value>false</value> 
    </property> 
</configuration> 

答えて

1

あなたはハイブのメタストアとしてリレーショナルデータベースを使用して、データベースCONN列strがハイブに設定されていることを確認する必要があります。ここでは

は私のハイブ-site.xmlファイルでありますhiveserver2が実行されているサーバー上の-site.xml

https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdminあなたはhive-site.xmlに設定され、次の特性を必要とする

+0

私は私のハイブ-site.xmlファイルをチェックし、私が使用しているクラスタがメタストアデータベースは、私はビーラインが接続抱えている同じマシン上にないので、(リモートのリレーショナル・データベースのメタストアを使用するように設定され/ Thriftserverが実行されています)。これは私の問題と関連がありますか? – npp1993

+0

はい、まさにそれが理由です。別のメタストアdbを使用してクラスタに接続しているBeelineを使用する場合、hive-site.xmlに同じメタストアdb conn strなどを設定する必要があります。リモートmetastore dbがプライベートネットワークにある場合は、sshそれを使用するトンネルでなければ、 'beeline'しか使用できません。ネイティブCLIの' hive'は正しいメタストアを取得できません。 – chutium

+0

それでは、メトロストアがマシン 'w7'にあり、Thriftserverがマシン' mn'で実行されている場合は、このコマンドを使ってbeelineに接続する必要があります: '!connect jdbc:hive2:// w7:10000'?代わりに、hive-site.xmlに基づいてポート9083に接続する必要がありますか?私は本当に助けに感謝します。 – npp1993

0

を助けるかもしれません。例では、mariaDbドライバとmysqlを使用します。

<property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:mysql://hostname:3306/hive?createDatabaseIfNotExist=true</value> 
    <description>username to use against metastore database</description> 
    </property> 

    <property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>org.mariadb.jdbc.Driver</value> 
    <description>username to use against metastore database</description> 
    </property> 

    <property> 
    <name>javax.jdo.option.ConnectionUserName</name> 
    <value>username</value> 
    <description>username to use against metastore database</description> 
    </property> 

    <property> 
    <name>javax.jdo.option.ConnectionPassword</name> 
    <value>password</value> 
    <description>password to use against metastore database</description> 
    </property> 
関連する問題