wake-up-neo.com

SparkSQL vs Hive on Spark - Unterschiede und Vor- und Nachteile?

SparkSQL CLI verwendet intern HiveQL und für Hive on Spark (Hive-7292) verwendet Hive Spark als Backend-Engine. Kann jemand mehr Licht werfen, wie genau sich diese beiden Szenarien unterscheiden und die Vor- und Nachteile beider Ansätze sind?

22
Gaurav Khare
  1. Wenn SparkSQL Hive verwendet

    SparkSQL kann HiveMetastore verwenden, um die Metadaten der in HDFS gespeicherten Daten abzurufen. Diese Metadaten ermöglichen SparkSQL eine bessere Optimierung der von ihm ausgeführten Abfragen. Hier ist Spark der Abfrageprozessor. 

  2. Wenn Hive Spark verwendet Siehe den JIRA-Eintrag: Hive-7292

    Hier werden die Daten per Funk abgerufen. Und Hive ist der Abfrageprozessor. Wir können also alle wichtigen Funktionen von Spark Core nutzen. Dies ist jedoch eine bedeutende Verbesserung für Hive und ist seit dem 2. Februar 2016 noch in Arbeit. 

  3. Es gibt eine dritte Möglichkeit, Daten mit SparkSQL zu verarbeiten

    Verwenden Sie SparkSQL ohne Hive. Hier hat SparkSQL keinen Zugriff auf die Metadaten vom Hive-Metastore. Und die Abfragen laufen langsamer. Ich habe einige Leistungstests durchgeführt, bei denen die Optionen 1 und 3 verglichen wurden. Die Ergebnisse sind hier .

14
prajod

SparkSQL vs. Spark-API können Sie sich einfach vorstellen, dass Sie sich in der RDBMS-Welt befinden:

SparkSQL ist reines SQL, und die Spark-API ist die Sprache zum Schreiben gespeicherter Prozeduren

Hive on Spark ähnelt SparkSQL. Es handelt sich um eine reine SQL-Schnittstelle, die Spark als Ausführungsmodul verwendet. SparkSQL verwendet die Syntax von Hive. Als Sprache würde ich sagen, dass sie fast gleich sind.

hive on Spark bietet jedoch eine viel bessere Unterstützung für Hive-Funktionen, insbesondere für Hiveserver2 und Sicherheitsfunktionen. Hive-Funktionen in SparkSQL sind wirklich fehlerhaft. In SparkSQL gibt es einen Hiveserver2-Implikat. In der neuesten Release-Version (1.6.x) ist Hiveserver2 in SparkSQL nicht enthalten Es kann nicht mehr mit den Argumenten hivevar und hiveconf gearbeitet werden. Der Benutzername für die Anmeldung über jdbc funktioniert ebenfalls nicht.

siehe https://issues.Apache.org/jira/browse/SPARK-13983

ich glaube, dass die Unterstützung von Hive im Spark-Projekt wirklich nur von geringer Priorität ist ...

leider ist die Integration von Hive on spark nicht so einfach, es gibt viele Abhängigkeitskonflikte ... wie https://issues.Apache.org/jira/browse/Hive-13301

und wenn ich Hive mit Spark-Integration versuche, fange ich Hive-Cli zu Debug-Zwecken immer so an:

export HADOOP_USER_CLASSPATH_FIRST=true
bin/Hive --hiveconf Hive.root.logger=DEBUG,console

unsere Anforderung ist die Verwendung von spark mit hiveserver2 auf sichere Weise (mit Authentifizierung und Autorisierung). Momentan kann SparkSQL dies allein nicht bieten. Wir verwenden Ranger/sentry + Hive für Spark.

ich hoffe, dies kann Ihnen helfen, eine bessere Vorstellung davon zu bekommen, in welche Richtung Sie gehen sollen.

10
chutium

hier ist eine verwandte Antwort, die ich auf der offiziellen Website von Hive finde:
1.3 Vergleich mit Shark und Spark SQL. Im Spark-Ökosystem gibt es zwei verwandte Projekte, die Hive QL-Unterstützung für Spark bereitstellen: Shark und Spark SQL. ● Das Shark-Projekt übersetzt von Hive generierte Abfragepläne in seine eigene Darstellung und führt sie über Spark aus. ● Spark SQL ist eine Funktion in Spark. Es verwendet den Parser von Hive als Frontend, um Hive-QL-Unterstützung bereitzustellen. Entwickler von Spark-Anwendungen können ihre Datenverarbeitungslogik in SQL sowie die anderen Spark-Operatoren in ihrem Code leicht ausdrücken. Spark SQL unterstützt einen anderen Anwendungsfall als Hive.

Verglichen mit Shark und Spark SQL unterstützt unser Ansatz von Design alle vorhandenen Hive-Funktionen, einschließlich Hive QL (und alle zukünftigen Erweiterungen) und die Integration von Hive mit Autorisierung, Überwachung, Überwachung und anderen Betriebstools.

3. Hive-Level-Design. Wie in der Einführung erwähnt, verfolgt dieses Projekt einen anderen Ansatz als Shark oder Spark SQL, da wir keine SQL-Semantik mit Spark-Primitiven implementieren werden. Im Gegenteil, wir werden es mit MapReduce-Grundelementen implementieren. Neu ist hier nur, dass diese MapReduce-Grundelemente in Spark ausgeführt werden. Tatsächlich werden nur wenige Primitiv-Elemente von Spark in diesem Design verwendet.

Der Ansatz, MapReduce-Grundelemente von Hive in Spark auszuführen, der sich von Shark oder Spark SQL unterscheidet, hat die folgenden direkten Vorteile: in der Zukunft einführen. 2. Dieser Ansatz vermeidet oder verringert die Notwendigkeit von Anpassungsarbeiten in der Spark-Ausführungs-Engine von Hive.
3. Es wird auch den Umfang des Projekts einschränken und die langfristige Wartung reduzieren, indem Hive-on-Spark kongruent zu Hive MapReduce und Tez bleibt.

0
yuxh