Spark SQL - Tables Hive
Hive est livré avec la bibliothèque Spark en tant que HiveContext, qui hérite de SQLContext. À l'aide de HiveContext, vous pouvez créer et rechercher des tables dans HiveMetaStore et y écrire des requêtes à l'aide de HiveQL. Les utilisateurs qui n'ont pas de déploiement Hive existant peuvent toujours créer un HiveContext. Lorsqu'il n'est pas configuré par lehive-site.xml, le contexte crée automatiquement un métastore appelé metastore_db et un dossier appelé warehouse dans le répertoire courant.
Prenons l'exemple suivant de employeeenregistrer à l'aide des tables Hive. Toutes les données enregistrées sont dans le fichier texte nomméemployee.txt. Ici, nous allons d'abord initialiser l'objet HiveContext. En utilisant cela, nous allons créer une table, y charger les données d'enregistrement des employés en utilisant le langage HiveQL et y appliquer quelques requêtes.
employee.txt - Placez-le dans le répertoire courant où s'exécute le spark-shell.
1201, satish, 25
1202, krishna, 28
1203, amith, 39
1204, javed, 23
1205, prudvi, 23
Démarrez le Spark Shell
Tout d'abord, nous devons démarrer Spark Shell. Travailler avec HiveTables signifie que nous travaillons sur Hive MetaStore. Par conséquent, le système créera automatiquement un entrepôt pour stocker les données de table. Par conséquent, il est préférable d'exécuter Spark Shell sur un super utilisateur. Considérez la commande suivante.
$ su
password:
#spark-shell
scala>
Créer un objet SQLContext
Utilisez la commande suivante pour initialiser HiveContext dans Spark Shell
scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
Créer une table à l'aide de HiveQL
Utilisez la commande suivante pour créer une table nommée employee aux champs id, name, et age. Ici, nous utilisons leCreate déclaration de HiveQL syntaxe.
scala> sqlContext.sql("CREATE TABLE IF NOT EXISTS employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")
Charger des données dans une table à l'aide de HiveQL
Utilisez la commande suivante pour charger les données d'enregistrement des employés dans la table des employés. S'il est exécuté avec succès, les enregistrements d'employés donnés sont stockés dans leemployee table selon le schéma.
scala> sqlContext.sql("LOAD DATA LOCAL INPATH 'employee.txt' INTO TABLE employee")
Sélectionnez des champs dans le tableau
Nous pouvons exécuter tout type de requêtes SQL dans la table. Utilisez la commande suivante pour récupérer tous les enregistrements à l'aide de la requête de sélection HiveQL.
scala> val result = sqlContext.sql("FROM employee SELECT id, name, age")
Pour afficher les données d'enregistrement, appelez le show() méthode sur le résultat DataFrame.
scala> result.show()
Production
<console>:26, took 0.157137 s
+------+---------+----+
| id | name |age |
+------+---------+----+
| 1201 | Satish | 25 |
| 1202 | Krishna | 28 |
| 1203 | amith | 39 |
| 1204 | javed | 23 |
| 1205 | prudvi | 23 |
+------+---------+----+