Ich habe eine temporäre Tabelle mit Spark-SQL registriert, wie in [this section] beschrieben:Zugriff auf Spark-SQL RDD-Tabellen durch den Thrift Server
people.registerTempTable("people")
// I can run queries on it all right.
val teenagers = sqlContext.sql("SELECT name FROM people WHERE age >= 13 AND age <= 19")
Jetzt habe ich diese Tabelle zugreifen möchten remote über JDBC. Ich starte den Thrift-Server wie in [this other section] beschrieben.
./sbin/start-thriftserver.sh --master spark://same-master-as-above:7077
Aber die Tabelle ist nicht sichtbar.
0: jdbc:hive2://localhost:10000> show tables;
+---------+
| result |
+---------+
+---------+
No rows selected (2.216 seconds)
Ich denke, das liegt daran, dass die Tabelle „vorübergehend“ ist (das heißt, um die Lebensdauer des SqlContext
Objekt gebunden). Aber wie mache ich nicht temporäre Tabellen?
Ich kann Hive tables über den Thrift-Server sehen, aber ich sehe nicht, wie ich eine RDD so aussetzen könnte. Ich habe gefunden a comment das schlägt vor, ich kann nicht.
Oder sollte ich den Thrift-Server in meiner Anwendung mit meinem eigenen SqlContext
ausführen? Fast alle Klassen sind private
, und dieser Code ist nicht in Maven Central (soweit ich sehe). Soll ich HiveThriftServer2.startWithContext
verwenden? Es ist nicht dokumentiert und @DeveloperApi
, aber könnte funktionieren.
Haben Sie eine praktikable Antwort gefunden? – stackit
bei der Verwendung von pyspark seine nicht – stackit