2017-06-28 3 views
-1

Ich verwende eine SparkSession, um eine Verbindung zu einer Hive-Datenbank herzustellen. Ich versuche zu entscheiden, wie man die Daten am besten anreichert. Ich habe Spark Sql benutzt, aber ich bin müde, es zu benutzen.Große Abfrage oder mutieren Dataframe?

  1. Ruft der SparkSql gerade Hive Sql auf? Würde das bedeuten, dass Spark keine bessere Leistung bietet?

  2. Wenn nicht, sollte ich nur eine große SQL-Abfrage zu funken erstellen, oder sollte ich eine Tabelle greifen Ich möchte es in einen Datenrahmen konvertieren und manipulieren sie mit Funken-Funktionen?

+0

Es ist entweder das oder das. Die Verbesserung der Leistung mit Funken hängt mit so vielen Problemen zusammen, wie z. B. Datenlokalität, Unschärfe, ob Sie über genügend Arbeitsspeicher verfügen, um es zu laden oder nicht ... Daher können wir keine konkrete Antwort auf Ihre Frage geben. Und wie von @RickMoritz erwähnt, muss man ja testen ... – eliasah

Antwort

0
  1. Nein, Spark die Daten von Hive, lesen, aber seine eigenen Ausführungs-Engine verwenden. Leistung und Fähigkeiten werden sich unterscheiden. Wie viel hängt von der Ausführungsengine ab, die Sie für Hive verwenden. (M/R, Tez, Spark, LLAP?)
  2. Das ist das Gleiche. Ich würde zu SQL-Abfragen und A-B-Test gegen Hive am Anfang bleiben, aber SQL ist notorisch schwierig zu pflegen, wo Scala/Python-Code mit Sparks DataSet API auf lange Sicht benutzerfreundlicher ist.