Spark SQL interacción de fuente de datos múltiples_Capítulo 4

Spark SQL puede interactuar con múltiples fuentes de datos, como texto plano, json, parquet, csv, MySQL, etc.
1. Escribir en diferentes fuentes de datos
2. Leer desde diferentes fuentes de
datos Escribir datos:

paquete cn.itcast.sql
import java.util.Properties
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql. {DataFrame, SaveMode, SparkSession}
objeto WriterDataSourceDemo {
case class Person (id: Int, name: String, age: Int)
def main (args: Array [String]): Unit = {
// 1. rk 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 rowRDD: RDD [Persona] = linesRDD.map (línea => Persona (línea (0) .toInt, línea (1), línea (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 val personDF: DataFrame = rowRDD.toDF
//Escribir DF en diferentes fuentes de datos=
// La fuente de datos de texto admite solo una columna y tiene 3 columnas .;
//personDF.write.text
( actualizacionesD:\data\output\ text ”) personDF.write.json (“ D: \ data \ output \ json ”)
personDF.write.csv (“ D: \ data \ output \ csv ”)
personDF.write.parquet (“ D: \ data \ output \ parquet ”)
val prop = nuevas Propiedades ()
prop.setProperty (“ usuario ”,“ root ”)
prop.setProperty (“ contraseña ”,“ root ” )
personDF.write.mode (SaveMode.Overwrite) .jdbc (
“jdbc: mysql: // localhost: 3306 / bigdata? characterEncoding = UTF-8”, “persona”, prop)
println (“写入 成功”)
sc. stop ()
spark.stop ()
}
}

Lectura de datos:

paquete cn.itcast.sql
import java.util.Properties
import org.apache.spark.SparkContext
import org.apache.spark.sql.SparkSession
objeto ReadDataSourceDemo {
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. 读取 读取
spark.read.json ("D: \ data \ output \ json"). Show ()
spark.read.csv ("D: \ data \ output \ csv"). ToDF ("id "," Nombre "," edad "). Show ()
spark.read.parquet (" D: \ data \ output \ parquet "). Show ()
val prop = nuevas Propiedades ()
prop.setProperty (" usuario ", "raíz")
prop.setProperty ("contraseña", "raíz")
spark.read.jdbc (
"jdbc: mysql: // localhost: 3306 / bigdata? characterEncoding = UTF-8", "persona", prop) .show ()
sc. stop ()
spark.stop ()
}
}

3. Resumen
1. Datos de escritura de
SparkSQL : DataFrame / DataSet.write.json / csv / jdbc
2. Datos de lectura de
SparkSQL : SparkSession.read.json / csv / text / jdbc / format

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

Supongo que te gusta

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