Spark SQL 数据加载和保存

本文详细介绍了Spark SQL中数据的加载和保存,包括通用方式、Parquet、JSON以及MySQL的数据交互。通过format指定数据类型,option设置参数,如在JDBC中设置url等。还讲解了如何从JSON文件加载数据并创建临时表,以及从MySQL读写数据的操作。
摘要由CSDN通过智能技术生成


一 、Spark 数据的加载和保存

(一)通用的加载和保存方式

  • SparkSQL 提供了通用的保存数据和数据加载的方式。这里的通用指的是使用相同的
    API,根据不同的参数读取和保存不同格式的数据,SparkSQL 默认读取和保存的文件格式
    为 parquet

1、加载数据

  • spark.read.load 是加载数据的通用方法
    在这里插入图片描述
  • 如果读取不同格式的数据,可以对不同的数据格式进行设定
scala> spark.read.format("…")[.option("…")].load("…")
  • format(“…”):指定加载的数据类型,包括"csv"、“jdbc”、“json”、“orc”、"parquet"和
    “textFile”。
  • load(“…”):在"csv"、“jdbc”、“json”、“orc”、"parquet"和"textFile"格式下需要传入加载
    数据的路径。
  • option(“…”):在"jdbc"格式下需要传入 JDBC 相应参数,url、user、password 和 dbtable
    我们前面都是使用 read API 先把文件加载到 DataFrame 然后再查询,其实,我们也可以直
    接在文件上进行查询: 文件格式.文件路径

                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Spark SQL中的JDBC数据源来向MySQL数据库中插入数据。以下是一个示例代码: ```scala import org.apache.spark.sql.{SaveMode, SparkSession} val spark = SparkSession.builder() .appName("Insert to MySQL with Spark SQL") .master("local[*]") .getOrCreate() // 定义MySQL连接信息 val jdbcHostname = "localhost" val jdbcPort = 3306 val jdbcDatabase = "test_db" val jdbcUsername = "root" val jdbcPassword = "password" val jdbcUrl = s"jdbc:mysql://${jdbcHostname}:${jdbcPort}/${jdbcDatabase}?user=${jdbcUsername}&password=${jdbcPassword}" // 创建数据集 val data = Seq( (1, "Alice", 25), (2, "Bob", 30), (3, "Charlie", 35) ) val df = spark.createDataFrame(data).toDF("id", "name", "age") // 将数据集插入到MySQL中 df.write .mode(SaveMode.Append) .format("jdbc") .option("url", jdbcUrl) .option("dbtable", "people") .option("driver", "com.mysql.jdbc.Driver") .save() // 关闭SparkSession spark.stop() ``` 在上面的代码中,我们首先定义了MySQL数据库的连接信息。然后,我们创建了一个包含数据数据集,并使用`write`方法将其保存到MySQL中。其中,`mode`指定了写入模式(这里使用了追加模式),`format`指定了数据源格式(这里使用了JDBC数据源),`option`方法用于指定其他的连接参数,例如数据库表名和JDBC驱动程序。 在运行代码之前,需要将MySQL JDBC驱动程序添加到Spark的classpath中。可以通过将驱动程序复制到Spark的`jars`目录中来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值