spark mysql作为数据源读取数据操作

本文详细介绍如何使用SparkSQL进行数据操作,包括创建SparkSession、从数据库加载数据、过滤特定条件的数据、选择列并显示结果,以及将处理后的数据保存为不同格式。

1、sparkSQL操作需要创建SparkSession,sparkRDD操作需要创建SparkContext。
这里使用sparkSession

val sparkSession:SparkSession = SparkSession.builder()
.appName("JdbcSource")
.master("local[2]")
.getOrCreate()

2、加载数据源
url:连接到具体数据库
driver:mysql驱动
dbtable:urlcount数据库中的表名
user:数据库urlcount用户名
password:密码

import sparkSession.implicits._
val url_data:DataFrame = sparkSession.read.format("jdbc")
.options(Map(
"url" -> "jdbc:mysql://localhost:3306/urlcount",
"driver" -> "com.mysql.jdbc.Driver",
"dbtable" -> "url_data",
"user" -> "root"
"password" -> "root"
))

3、过滤

val r:Dataset[Row] = url_data.filter($"uid" > 2)
val rs:DataFrame = r.select($"xueyuan",$"number_one")

4、显示

rs.show()

5、读取后保存
以txt文件保存,注意r.select($“xueyuan”)这里只能单列

rs.write.text("e:/saveText")

以json格式保存

rs.write.json("e:/saveJson")

以csv格式保存 这是excel

rs.write.csv("e:/saveCsv")

以parquet格式保存

rs.write.parquet("e:/savePar")

6、关闭资源

sparkSession.stop()
### 如何使用 Spark SQL 操作数据源 Spark SQL 提供了丰富的 API 来与各种数据源进行交互,包括 Parquet、JSON、CSV 和 JDBC 等[^2]。以下是详细的操作步骤和代码示例。 #### 1. 初始化 SparkSession 在操作任何数据源之前,必须先初始化 `SparkSession`,这是 Spark SQL 的入口点[^2]。 ```scala val spark: SparkSession = SparkSession.builder() .appName("DataFromMysql") .master("local[2]") .getOrCreate() ``` #### 2. 读取 JSON 数据 可以使用 `spark.read.json` 方法从本地或分布式文件系统中读取 JSON 文件,并将其转换为 DataFrame[^1]。 ```scala val dataFrame: DataFrame = spark.read.json("file:///data/bigfiles/test.json") dataFrame.createOrReplaceTempView("data") // 创建临时视图 spark.sql("select id, name, age, class from data").orderBy("id").show() // 查询并显示结果 ``` #### 3. 使用 JDBC 操作数据库 通过 JDBC 连接数据库(如 MySQL),需要设置连接属性并指定 JDBC URL[^3]。 ```scala import java.util.Properties val properties: Properties = new Properties() properties.setProperty("user", "root") properties.setProperty("password", "Password123$") val mysqlDF: DataFrame = spark.read.jdbc("jdbc:mysql://192.168.196.101:3306/spark", "person", properties) mysqlDF.show() // 显示表数据 ``` #### 4. 写入数据到数据库 可以通过 `DataFrame.write.jdbc` 方法将数据写入数据库[^4]。 ```scala import org.apache.spark.sql.types._ import org.apache.spark.sql.Row // 创建新的数据 val personRDD = spark.sparkContext.parallelize(Array("3 zhangsan 22", "4 lisi 29")).map(_.split(" ")) val schema = StructType(List( StructField("id", IntegerType, true), StructField("name", StringType, true), StructField("age", IntegerType, true) )) val rowRDD = personRDD.map(p => Row(p(0).toInt, p(1).trim, p(2).toInt)) val personDF = spark.createDataFrame(rowRDD, schema) // 将数据插入表中 personDF.write.mode(SaveMode.Append).jdbc("jdbc:mysql://192.168.196.101:3306/spark", "person", properties) ``` #### 5. 其他数据源操作 Spark SQL 支持多种数据格式,例如 CSV 和 Parquet。以下是如何读取和写入 CSV 文件的示例[^2]: ```scala // 读取 CSV 文件 val csvDF: DataFrame = spark.read.option("header", "true").csv("path/to/csv/file.csv") // 写入 CSV 文件 csvDF.write.mode(SaveMode.Overwrite).option("header", "true").csv("path/to/output/directory") ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值