Dos estilos de consulta de chispa

Dos estilos de consulta 1.
Trabajo de preparación
Lea el archivo y conviértalo a DataFrame o DataSet

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

1.2, estilo DSL
SparkSQL proporciona un lenguaje específico de dominio (DSL) para facilitar la operación de datos estructurados
1. Ver los datos del campo de nombre
personDF.select (personDF.col ("nombre")). Mostrar
personDF.select (personDF ("nombre ")). Mostrar
personDF.select (col (" nombre ")). Mostrar
personDF.select ("nombre"). show

2. Ver los datos del campo de nombre y edad
personDF.select ("nombre", "edad"). show

3. Consulta todos los nombres y edades, y age + 1
personDF.select (personDF.col ("name"), 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 ( " norte una metro mi " , "nombre", "age", $ "age" +1) .show

4. Para filtrar una edad mayor o igual a 25, utilice el método de filtro para filtrar
personDF.filter (col ("edad")> = 25) .show
personDF.filter ($ "edad"> 25) .show

5. Cuente la cantidad de personas mayores de 30
personasDF.filter (col ("edad")> 30) .count ()
personDF.filter ($ "edad"> 30) .count ()

6. Agrupe por edad y cuente el número de personas de la misma edad.
personDF.groupBy ("age"). count (). show
1.3, estilo SQL
una potencia de trama de datos es que podemos pensar en ella como una tabla de datos relacional, las consultas SQL se pueden realizar mediante el uso de spark.sql en el programa (), el resultado se devuelve como una trama de datos
Si desea utilizar La sintaxis de estilo SQL requiere que el DataFrame se registre como una tabla de la siguiente manera:
personDF.createOrReplaceTempView ("t_person")
spark.sql ("select * from t_person"). Show

1. Mostrar la información descriptiva de la tabla
spark.sql ("desc t_person"). show

2. Verifique los dos mejores más antiguos
spark.sql ("seleccione * de t_person orden por edad desc límite 2").

3. Consulta de información para personas mayores de 30 años
spark.sql ("select * from t_person where age> 30") .show

4. Use el estilo SQL para completar los requisitos en DSL

spark.sql ("seleccione nombre, edad + 1 de t_person"). muestre
spark.sql ("seleccione nombre, edad de t_person donde edad> 25"). muestre
spark.sql ("seleccione cuenta (edad) de t_person donde edad > 30 "). Show
spark.sql (" seleccione edad, recuento (edad) del grupo t_person por edad "). Show

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

238 artículos originales publicados · elogiados 429 · 250,000 visitas

Supongo que te gusta

Origin blog.csdn.net/qq_45765882/article/details/105560669
Recomendado
Clasificación