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 优化吞吐量
相关推荐
yumgpkpm10 小时前
Iceberg在Cloudera CDP集群详细操作步骤
大数据·人工智能·hive·zookeeper·spark·开源·cloudera
梦里不知身是客1117 小时前
spark的统一内存管理机制
java·大数据·spark
华阙之梦17 小时前
【仅公网互通的 Spark 集群通信与配置实战方案】
大数据·ajax·spark
心止水j19 小时前
数据采集-----案例
spark
梦里不知身是客111 天前
RDD分区的设定规则
spark
梦里不知身是客111 天前
spark中如何调节Executor的堆外内存
大数据·javascript·spark
beijingliushao1 天前
105-Spark之Standalone HA环境搭建过程
大数据·spark
毅硕科技1 天前
毅硕HPC | NVIDIA DGX Spark 万字硬核评测:将AI超级工厂带上桌面
功能测试·spark·hpc
联系QQ 180809512 天前
探索光伏MPPT控制:基于Boost升压变换器的实践
spark
梦里不知身是客112 天前
spark如何调节jvm的连接等待时长
大数据·分布式·spark