Deux styles de requête d'étincelle

Deux styles de requête 1. Travaux de
préparation
Lire le fichier et le convertir en DataFrame ou DataSet

val lineRDD = sc.textFile (“hdfs: // node01: 8020 / person.txt”) .map (_. split (""))
classe de cas Person (id: Int, nom: String, age: Int)
val personRDD = lineRDD.map (x => Person (x (0) .toInt, x (1), x (2) .toInt))
val personDF = personRDD.toDF
personDF.show
// val personDS = personRDD.toDS
// personDS .montrer

1.2, style DSL
SparkSQL fournit un langage spécifique au domaine (DSL) pour faciliter le fonctionnement des données structurées
1. Affichez les données du champ de nom
personDF.select (personDF.col ("name")). Afficher
personDF.select (personDF ("name ")). Afficher
personDF.select (col (" nom ")). Afficher
personDF.select ("nom"). show

2. Affichez les données des champs de nom et d'âge
personDF.select ("nom", "âge"). show

3. Recherchez tous les nom et âge, et âge + 1
personDF.select (personDF.col ("nom"), personDF.col ("age") + 1) .show
personDF.select (personDF ("name") , personDF ("age") + 1) .show
personDF.select (col ("name"), col ("age") + 1) .show
personDF.select ("name", "age"). show
personDF.select ( " n une m e " , "Nom", "age", $ "age" +1) .show

4. Pour filtrer l'âge supérieur ou égal à 25, utilisez la méthode de filtrage pour filtrer
personDF.filter (col ("age")> = 25) .show
personDF.filter ($ «age»> 25) .show

5. Comptez le nombre de personnes de plus de 30 personnes
FD.filter (col («âge»)> 30) .count ()
personDF.filter ($ «age»> 30) .count ()

6. Regrouper par âge et compter le nombre de personnes du même âge
personDF.groupBy ("age"). count (). show
1.3.
L'un des aspects puissants du DataFrame de style SQL est que nous pouvons le considérer comme une table de données relationnelles, puis nous pouvons utiliser spark.sql () dans le programme pour exécuter la requête SQL, et le résultat sera renvoyé en tant que DataFrame
si nous voulons utiliser La syntaxe de style SQL nécessite que le DataFrame soit enregistré en tant que table de la manière suivante:
personDF.createOrReplaceTempView ("t_person")
spark.sql ("select * from t_person").

1. Affichez les informations descriptives du tableau
spark.sql («desc t_person»). show

2. Vérifiez les deux premiers plus anciens
spark.sql ("sélectionner * dans l'ordre de t_person par âge desc limite 2").

3. Recherchez des informations pour les personnes de plus de 30 ans
spark.sql ("select * from t_person where age> 30") .show

4. Utilisez le style SQL pour remplir les exigences en DSL

spark.sql ("sélectionner le nom, âge + 1 de t_person"). afficher
spark.sql ("sélectionner le nom, âge de t_person où âge> 25"). afficher
spark.sql ("sélectionner le nombre (âge) de t_person où age" > 30 "). Show
spark.sql (" sélectionner l'âge, le nombre (âge) du groupe t_person par âge "). Show

2.5 Résumé
1.DataFrame和DataSet都可以通过RDD来进行创建
2.也可以通过读取普通文本创建--注意:直接读取没有完整的约束,需要通过RDD+Schema
3.通过josn/parquet会有完整的约束
4.不管是DataFrame还是DataSet都可以注册成表,之后就可以使用SQL进行查询了! 也可以使用DSL!

Publié 238 articles originaux · loué 429 · 250 000 vues

Je suppose que tu aimes

Origine blog.csdn.net/qq_45765882/article/details/105560669
conseillé
Classement