2017-11-13 3 views
1

nicht abrufen Ich versuche, Datenbanken oder Tabellendetails von Hive von spark mit HiveContext zu erhalten. Aber ich bin nicht in der Lage zu bestehenden Hive-Datenbank zu zeigen, wie unten dargestellt: Spark-Version: 2.2.0 Hive Version: 2.3.0Konnte vorhandene Hive-Tabellen von HiveContext mit Spark

unter Skript verwenden Spark Shell eine Verbindung zu bestehendem Hive Server (127.0.0.1 unten verwendet meine Maschine IP-Adresse) ist:

scala> val hc = new org.apache.spark.sql.hive.HiveContext(sc) 
warning: there was one deprecation warning; re-run with -deprecation for details 
hc: org.apache.spark.sql.hive.HiveContext = [email protected] 

scala> hc.setConf("hive.metastore.uris","thrift://127.0.0.1:9083") 

scala> val df = hc.sql("show databases") 
df: org.apache.spark.sql.DataFrame = [databaseName: string] 

scala> df.show 
+------------+ 
|databaseName| 
+------------+ 
|  default| 
+------------+ 


scala> val dfTables = hc.sql("show tables"); 
dfTables: org.apache.spark.sql.DataFrame = [database: string, tableName: string ... 1 more field] 

scala> dfTables.show 
+--------+---------+-----------+ 
|database|tableName|isTemporary| 
+--------+---------+-----------+ 
+--------+---------+-----------+ 

Wie oben gezeigt, vermag ich nicht zur Verfügung die bestehenden Hive-Datenbanken und Tabellen zu erhalten. HiveContext verweist auf eine neue Datenbank (Standard) und keine Tabellen verfügbar. Unter meinen hive db aufgeführt sind:

hive> show databases; 
OK 
default 
mydbbackup 
Time taken: 7.593 seconds, Fetched: 2 row(s) 
hive> use mydbbackup; 
OK 
Time taken: 0.021 seconds 
hive> show tables; 
OK 
customers 
customerspart 
customerspart1 
Time taken: 0.194 seconds, Fetched: 3 row(s) 
hive> 

Unten ist mein hive-site.xml:

<configuration> 
<property> 
<name>javax.jdo.option.ConnectionURL</name> 
<value>jdbc:derby:;databaseName=/home/hduser/apache-hive-2.3.0-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> 

Unten ist mein Funke conf-Verzeichnis:

total 40 
drwxr-xr-x 2 root root 4096 Nov 12 20:22 ./ 
drwxr-xr-x 12 root root 4096 Nov 9 22:57 ../ 
-rw-r--r-- 1 root root 996 Nov 9 22:57 docker.properties.template 
-rw-r--r-- 1 root root 1105 Nov 9 22:57 fairscheduler.xml.template 
-rw-r--r-- 1 root root 2025 Nov 9 22:57 log4j.properties.template 
-rw-r--r-- 1 root root 7313 Nov 9 22:57 metrics.properties.template 
-rw-r--r-- 1 root root 865 Nov 9 22:57 slaves.template 
-rw-r--r-- 1 root root 1292 Nov 9 22:57 spark-defaults.conf.template 
-rwxr-xr-x 1 root root 3699 Nov 9 22:57 spark-env.sh.template* 

Muss ich ändern Alles, was auf einen vorhandenen Hive-Server verweist, anstatt neu zu erstellen. Bitte hilf mir dabei.

+0

für die Sie gemeinsam Metastore zwischen hive festlegen müssen und Funken –

+0

Sie brauchen nicht explizit einen Bienenstock contect zu erstellen. Sie können die Spark-Sitzung, die von spark2 erstellt wird, direkt verwenden, um Ihre Abfragen in Bezug auf die Struktur auszuführen. Verwenden Sie scala> spark.sql ("show databases") res0: org.apache.spark.sql.DataFrame = [datenbankname: string] –

+0

@AmitKumar Ich habe versucht, mit dem gleichen wie Sie vorgeschlagen, aber zeigt nur Standard-Datenbank. Könntest du mir helfen, den üblichen Metastore zwischen Bienenstock und Funken zu konfigurieren? – Chaithu

Antwort

0

In hive-site.xml Gebrauchseigenschaften:

<property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:mysql://<<hostname>>:<<port>>/hive?createDatabaseIfNotExist=true</value> 
</property> 

<property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>com.mysql.jdbc.Driver</value> 
</property> 

<property> 
    <name>javax.jdo.option.ConnectionUserName</name> 
    <value>username</value> 
</property> 

<property> 
    <name>javax.jdo.option.ConnectionPassword</name> 
    <value>password</value> 
</property> 

Dann setzen hive-site.xml in conf Ordner der Funken Installation, nachdem es erneut versuchen

1

Ihre Funken Shell starten, wie unten gezeigt wird, :

./spark-shell --driver-java-options 
"-Dhive.metastore.uris=thrift://localhost:9083" 
0

Dies wird Ihnen Ergebnis erforderlich:

org.apache.spark.sql.hive.HiveContext

Import

val hc = new HiveContext (sc)

Import hc.implicits._

val df = hc.sql ("show-Datenbanken „)

df.show

Verwandte Themen