sparkSQL读取数据的方式

Spark SQL 提供了多种灵活的数据读取方式,支持多种数据源格式。以下是核心读取方法及示

linux环境下,按照如下方式进行

进入目录

cd /opt/installs/anaconda3/lib/python3.8/site-packages/pyspark/jars

上传jar包:mysql-connector-java-5.1.32.jar

例:

1. 从文件读取

(1) CSV 文件
复制代码
df = spark.read \
    .format("csv") \
    .option("header", "true") \  # 包含标题行
    .option("inferSchema", "true") \  # 自动推断数据类型
    .load("/path/to/file.csv")
(2) JSON 文件
复制代码
df = spark.read \
    .format("json") \
    .load("/path/to/file.json")
(3) Parquet 文件 (列式存储)
复制代码
df = spark.read \
    .format("parquet") \
    .load("/path/to/file.parquet")
(4) ORC 文件
复制代码
df = spark.read \
    .format("orc") \
    .load("/path/to/file.orc")

2. 从 JDBC 数据库读取

复制代码
df = spark.read \
    .format("jdbc") \
    .option("url", "jdbc:mysql://host:port/db") \
    .option("dbtable", "table_name") \
    .option("user", "username") \
    .option("password", "password") \
    .load()

3. 从 Hive 表读取

复制代码
df = spark.sql("SELECT * FROM hive_database.table_name")

4. 通用读取方法

支持通过格式名直接调用:

复制代码
# 等效方法
df = spark.read.csv("/path/to/file.csv", header=True)
df = spark.read.json("/path/to/file.json")
df = spark.read.parquet("/path/to/file.parquet")

5. 高级配置选项

参数 说明 示例值
sep 分隔符 (CSV) ";"
encoding 文件编码 "UTF-8"
mergeSchema 合并多个 Parquet 文件的 Schema "true"
query JDBC 自定义查询语句 "(SELECT col1 FROM t)"

6. 示例:读取带特殊配置的 CSV

复制代码
df = spark.read \
    .option("sep", "|") \  # 管道分隔符
    .option("nullValue", "N/A") \  # 自定义空值标识
    .option("dateFormat", "yyyy-MM-dd") \  # 日期格式
    .csv("/data/sales_records.csv")

最佳实践

  • 优先使用 Parquet/ORC 等列式格式提升性能
  • 大数据集避免 inferSchema,显式定义 Schema
  • JDBC 连接添加 fetchsize 优化吞吐量
相关推荐
阿里云大数据AI技术2 天前
Daft 多模态视频抽帧性能优化实践:从抽帧到大模型打标,一条视频理解流水线是怎么跑起来的
大数据·人工智能·spark
FserSuN3 天前
回顾Spark的概念与应用
大数据·分布式·spark
用户3610588626123 天前
SparkSQL 数据源与底层架构深度剖析
大数据·spark
用户3610588626123 天前
SparkSQL 之 DataFrame 与 DataSet 及实操演练
大数据·spark
BYSJMG3 天前
计算机毕业设计选题推荐|【基于大数据的城市噪音数据可视化分析】Spark+K-Means+FP-Growth实战
大数据·hadoop·信息可视化·spark·课程设计
starzy19903 天前
Spark 核心之 Shuffle 文件寻址详解
大数据·spark
starzy19904 天前
SparkSQL 数据源与底层架构深度剖析
大数据·分布式·架构·spark
roman_日积跬步-终至千里4 天前
【Spark与SQL网关(1)】Spark 提交模式与 Spark Thrift Server:到底在“提交”什么
大数据·sql·spark
starzy19905 天前
Spark 核心之 Spark-SortShuffle 原理深度剖析
大数据·spark
用户3610588626125 天前
Spark 核心之 Spark 内存管理深度剖析
大数据·spark