web-dev-qa-db-fra.com

SparkSQL vs Hive on Spark - Différences et avantages et inconvénients?

SparkSQL CLI utilise HiveQL en interne et dans le cas où Hive on spark (Hive-7292), Hive utilise spark comme moteur de base. Quelqu'un peut-il éclairer un peu plus, en quoi ces deux scénarios sont-ils exactement différents et les avantages et les inconvénients des deux approches?

22
Gaurav Khare
  1. Quand SparkSQL utilise Hive

    SparkSQL peut utiliser HiveMetastore pour obtenir les métadonnées des données stockées dans HDFS. Ces métadonnées permettent à SparkSQL d'optimiser l'optimisation des requêtes qu'il exécute. Ici, Spark est le processeur de requêtes. 

  2. When Hive utilise Spark Voir l'entrée JIRA: Hive-7292

    Ici, les données sont accessibles via spark. Et Hive est le processeur de requêtes. Nous avons donc toutes les caractéristiques deign de Spark Core à exploiter. Mais ceci est une amélioration majeure pour Hive et est toujours "en cours" à partir du 2 février 2016. 

  3. Il existe une troisième option pour traiter les données avec SparkSQL

    Utilisez SparkSQL sans utiliser Hive. Ici, SparkSQL n’a pas accès aux métadonnées de Hive Metastore. Et les requêtes sont plus lentes. J'ai fait quelques tests de performance en comparant les options 1 et 3. Les résultats sont ici .

14
prajod

API SparkSQL vs Spark, vous pouvez simplement imaginer que vous êtes dans le monde des SGBDR:

SparkSQL est du SQL pur et l'API Spark est un langage permettant d'écrire des procédures stockées.

Hive on Spark est similaire à SparkSQL, c'est une interface SQL pure qui utilise spark comme moteur d'exécution. SparkSQL utilise la syntaxe de Hive. En tant que langage, je dirais qu'elles sont presque identiques.

mais Hive on Spark prend beaucoup mieux en charge les fonctionnalités de Hive, en particulier hiveserver2 et les fonctionnalités de sécurité. Les fonctionnalités de Hive dans SparkSQL sont vraiment boguées. ne fonctionne plus avec les arguments hivevar et hiveconf, et le nom d'utilisateur pour la connexion via jdbc ne fonctionne pas non plus ...

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

je crois que le support de Hive dans le projet spark est vraiment très peu prioritaire ...

malheureusement, l'intégration de Hive on spark n'est pas si simple, il existe de nombreux conflits de dépendance ... tels que https://issues.Apache.org/jira/browse/Hive-13301

et, quand j'essaie Hive avec une intégration d'étincelle, à des fins de débogage, je démarre toujours Hive cli comme ceci:

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

notre exigence consiste à utiliser spark avec hiveserver2 de manière sécurisée (avec authentification et autorisation), pour le moment, SparkSQL ne peut à lui seul fournir cette information, nous utilisons ranger/sentry + Hive on Spark.

j'espère que cela vous aidera à avoir une meilleure idée de la direction à prendre.

10
chutium

voici la réponse que je trouve sur le site officiel de Hive:
1.3 Comparaison avec Shark et Spark SQL Il existe deux projets liés dans l'écosystème Spark qui prennent en charge Hive QL sur Spark: Shark et Spark SQL. ● Le projet Shark traduit les plans de requête générés par Hive dans sa propre représentation et les exécute sur Spark. ● Spark SQL est une fonctionnalité de Spark. Il utilise l’analyseur de Hive comme interface pour fournir un support Hive QL. Les développeurs d'applications Spark peuvent facilement exprimer leur logique de traitement de données en SQL, ainsi que les autres opérateurs Spark, dans leur code. Spark SQL prend en charge un cas d'utilisation différent de celui de Hive.

Comparée à Shark et à Spark SQL, notre approche en conception prend en charge toutes les fonctionnalités Hive existantes, y compris Hive QL (et toute extension future), et l’intégration de Hive avec des outils d’autorisation, de surveillance, d’audit et autres outils opérationnels.

3. Conception au niveau de la ruche Comme indiqué dans l'introduction, ce projet adopte une approche différente de celle de Shark ou de Spark SQL en ce sens que nous n'allons pas implémenter la sémantique SQL en utilisant les primitives de Spark. Au contraire, nous allons l'implémenter en utilisant les primitives MapReduce. La seule nouveauté ici est que ces primitives MapReduce seront exécutées dans Spark. En fait, seuls quelques-uns des primitifs de Spark seront utilisés dans cette conception.

L’approche d’exécution des primitives MapReduce de Hive sur Spark, qui est différente de Shark ou de Spark SQL, présente les avantages directs suivants: 1. Les utilisateurs de Park obtiendront automatiquement l’ensemble des fonctionnalités riches de Hive, y compris les nouvelles présenter à l'avenir. 2.Cette approche évite ou réduit la nécessité de tout travail de personnalisation dans le moteur d’exécution de Hive’s Spark.
3.Il limitera également la portée du projet et la maintenance à long terme en gardant Hive-on-Spark en harmonie avec Hive MapReduce et Tez.

0
yuxh