Escribir código SparkSQL a través de la conversión mutua IDEA_

Hay muchos (6 tipos) de conversión mutua entre RDD, DF y DS, pero nuestra operación real es de solo 2 tipos:
1) Usar la operación de operador RDD
2) Usar DSL / SQL para operar en la tabla

paquete cn.itcast.sql
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql. {DataFrame, Dataset, Row, SparkSession}
objeto TransformDemo {
case class Person (id : Int, nombre: String, edad: Int)
def main (args: Array [String]): Unit = {
// 1.. SparkSession
val spark: SparkSession = SparkSession.builder (). Master (“local [*]” ) .appName (“SparkSQL”). getOrCreate ()
val sc: SparkContext = spark.sparkContext
sc.setLogLevel (“WARN”)
// 2. 读取 文件
val fileRDD: RDD [String] = sc.textFile (“D: \ data \ person.txt ”)
val linesRDD: RDD [Array [String]] = fileRDD.map ( .split (" "))
val personRDD: RDD [Person] = linesRDD.map (line => Person (line (0) .toInt, line (1), line (2) .toInt))
// 3. Convierta RDD a DF
// Nota: No hay ningún método toDF en RDD. En la nueva versión, debe agregarle un método. Puede usar la conversión implícita
import spark.implicits.

// Nota: El tipo genérico de rowRDD anterior es Person, que contiene información de esquema
// para que SparkSQL pueda Obtenido automáticamente por reflexión y agregado a DF
// ===Conversión mutua
//1.RDD–>DF
val personDF: DataFrame = personRDD.toDF
//2.DF–>RDD
val rdd: RDD [Fila] = personDF.rdd
//3.RDD– > SD
val DS: Conjunto de datos [Persona] = personRDD.toDS ()
//4.DS–>RDD
val rdd2: RDD [Persona] = DS.rdd
//5.DF–>DS
val DS2: Conjunto de datos [Persona] = personaDF.as [Persona]
// 6 .DS–> DF
val DF: DataFrame = DS2.toDF ()
sc.stop ()
spark.stop ()
}
}

RDD DF DS conversión mutua

// La conversión entre los tres RDD DF DS
// La conversión de RDD a DF DS
// La premisa es llamar a la conversión implícita
personRDD.toDF ()
personRDD.toDS ()
// La conversión de DF a RDD DS
DataDF.rdd
val DSValue: Dataset [Persona] = DataDF.as [Persona]
// DS convertido a RDD DF
DSValue.rdd
DSValue.toDF ()
// resumen
// 1 convertido a RDD .rdd
// 2 convertido a DF .toDF ()
// 3 convertido En DS
// 3.1-rdd .toDS ()
// 3.2-DF .as [Persona]

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

Supongo que te gusta

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