当前位置: 首页 > news >正文

SparkSQL读取普通文件的方式

SparkSQL 读取普通文件(如 CSV、JSON、文本文件等)主要通过 SparkSessionread API 实现。以下是详细步骤和示例:

  • 类型:text / csv【任意固定分隔符】 / json / orc / parquet / jdbc / table【Hive表】
  • 语法:spark.read.format(格式).load(读取的地址)

方式一:给定读取数据源的类型和地址

spark.read.format("json").load(path)
spark.read.format("csv").load(path)
spark.read.format("parquet").load(path)

方式二:直接调用对应数据源类型的方法

spark.read.json(path)
spark.read.csv(path)
spark.read.parquet(path)

特殊参数:option,用于指定读取时的一些配置选项

spark.read.format("csv").option("sep", "\t").load(path)

jdbcDF = spark.read \
.format("jdbc") \
.option("网址", "jdbc:postgresql:dbserver") \
.option("数据库名", "schema.tablename") \
.option("用户名", "username") \
.option("密码", "password") \
.load()

1. 基础语法

val df = spark.read.format("文件格式")  // 如 csv, json, text, parquet.option("参数名", "参数值")  // 可选配置.load("文件路径")


2. 读取不同格式的文件

(1) 读取 CSV 文件
// Scala 示例
val csvDF = spark.read.format("csv").option("header", "true")     // 包含表头.option("inferSchema", "true") // 自动推断数据类型.load("/path/to/file.csv")// Python 示例 (PySpark)
csvDF = spark.read \.format("csv") \.option("header", "true") \.option("inferSchema", "true") \.load("/path/to/file.csv")

(2) 读取 JSON 文件
val jsonDF = spark.read.format("json").load("/path/to/file.json")

(3) 读取纯文本文件
val textDF = spark.read.format("text").load("/path/to/file.txt")  // 每行作为字符串存入 DataFrame


3. 关键配置参数

参数说明
header是否包含列头(默认 false
inferSchema是否自动推断数据类型(默认 false,建议小文件开启)
delimiter指定分隔符(例如 ,;\t
quote定义引号字符(默认 "
escape定义转义字符(默认 \
multiLine是否允许单字段跨多行(适用于复杂 JSON)

4. 路径指定方式

  • 本地文件file:///absolute/path/to/file.csv
  • HDFS 文件hdfs://namenode:port/path/to/file.csv
  • S3 文件s3a://bucket-name/path/to/file.csv

📌 示例:

.load("hdfs://localhost:9000/data/sales.json")


5. 直接使用格式简写

// 读取 CSV(等价于 .format("csv"))
val df = spark.read.csv("/path/to/file.csv") // 读取 JSON
val df = spark.read.json("/path/to/file.json") 


6. 查看数据与 Schema

df.show(5)      // 显示前5行
df.printSchema() // 打印表结构

输出示例:

root|-- name: string (nullable = true)|-- age: integer (nullable = true)|-- city: string (nullable = true)


7. 注意事项

  1. 文件路径
    集群环境下需使用分布式存储路径(如 HDFS/S3),避免本地路径。
  2. 性能优化
    • 大文件避免使用 inferSchema(显式定义 Schema 更快)
    • 优先选择列式存储格式(如 Parquet/ORC)
  3. 依赖库
    读取特定格式(如 Excel)需添加额外依赖包。

完整示例(读取 CSV)

// 创建 SparkSession
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder.appName("ReadExample").getOrCreate()// 读取 CSV 并定义 Schema
val df = spark.read.option("header", "true").option("delimiter", ";").schema("name STRING, age INT, city STRING") // 显式定义 Schema.csv("hdfs:///data/users.csv")// 执行操作
df.filter($"age" > 30).show()

通过上述方法,可灵活处理各类普通文件数据。

http://www.dtcms.com/a/569445.html

相关文章:

  • 网站平台推广方案网站内页如何做排名
  • 各个系统的 docker安装
  • 大庆建设网站表格下载建设一个网站需要哪些方面的开支
  • 各种网站建设报价制作网页网站的软件是
  • 在多阶段松弛实验中使用分布式光纤传感量化局部和非局部岩石变形
  • (ACP广源盛)GSV6172---MIPI/LVDS 信号转换为 Type-C/DisplayPort 1.4/HDMI 2.0 并集成嵌入式 MCU
  • 【每天一个AI小知识】:什么是少样本学习?
  • 建网站找那家企业好横岗网站建设公司
  • Vue面试项目经验分享:如何专业展示技术能力与解决问题
  • 浏阳网站开发顺德做网站的公司
  • 20、docker跨主机网络-Vxlan、vtep补充
  • CONCAT函数使用中出现空指针异常问题分析
  • 织梦网站挂马教程wordpress数据盘
  • 网站更改备案深圳工程招标交易网
  • 盐城网站建设方案珠海设计公司排名
  • 天津建设网站安管人员成绩查询新闻资讯app开发
  • 2025 Vscode安装Python教程
  • Iconfont 的本质原理和使用场景
  • 企业TB级数据加密迁移至AWS云:AWS Snowball Edge Storage Optimized成本效益方案解析
  • 网站后台是怎么做的上海关键词优化
  • p2p金融网站开发东莞短视频的推广方法
  • 晋江wap站是什么意思自己做的网站怎么爬数据
  • mongo的docker修复
  • Excel怎么快速提取混合单元格中的中文、英文、数字?
  • 易思企业网站管理系统wordpress页面输入密码
  • 网站建设怎么分录网站忘记后台地址
  • 对于不同数据库的一些操作和学习
  • [fmt] 格式化器 (formatter<T, Char>) | 简单情况的`format_as`
  • 智能体如何重塑人机协作?2025职场自动化的架构变革
  • 网站建设需求文档计算机网站建设教程