DataSource
package com.shujia.spark.sql import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession} object Demo2DataSource { def main(args: Array[String]): Unit = { val spark: SparkSession =SparkSession .builder() .appName("source") .master("local") .getOrCreate() /** * 读取json格式数据 * json 中自带列名和列的类型 ,spark在读取的过程中会自动解析 */ spark.read .format("json") .load("data/students.json") .show() /** * 读取CSV格式的数据 * */ val csvDF: DataFrame =spark .read .format("csv") //增加列分隔方式,默认是逗号 .option("sep",",") //增加表结构 .schema("id String,name String,age Int,gender String,clazz String") .load("data/students.txt") csvDF.show() csvDF.printSchema() /** * 保存为parquet格式 * */ // csvDF.write.mode(SaveMode.Overwrite).parquet("data/parquet") /** * * 读取parquet格式数据 * 1、自带列名 * 2、数据会压缩(压缩和解压需要时间,压缩比一般在5倍左右) * 3、可以兼容hive */ val parquetDF: DataFrame =spark .read .format("parquet") .parquet("data/parquet") parquetDF.show() parquetDF.printSchema() // csvDF.write.mode(SaveMode.Overwrite).orc("data/orc") /** * 读取orc格式 * 1、自带列名 * 2、数据会压缩 (压缩和解压需要时间,压缩比一般在5倍左右) * 3、可以兼容hive */ val orcDF: DataFrame =spark .read .format("orc") .load("data/orc") orcDF.show() orcDF.printSchema() /** * 读取jdbc中的数据 * */ val jdbcDF: DataFrame =spark.read .format("jdbc") .option("url","jdbc:mysql://master:3306") .option("dbtable","student.student") .option("user", "root") .option("password", "123456") .load() jdbcDF.show() /** * 将数据保存到mysql * */ orcDF.write .format("jdbc") .mode(SaveMode.Overwrite) .option("url", "jdbc:mysql://master:3306?useUnicode=true&characterEncoding=utf-8") .option("dbtable", "student.student1") .option("user", "root") .option("password", "123456") //手动指定列的类型 .option("createTableColumnTypes", "name varchar(64), id varchar(64),age int,gender varchar(64),clazz varchar(64)") .save() } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能