spark组件-spark sql-读取数据

支持的数据源类型

Spark SQL 内置支持丰富的数据格式和外部系统,核心数据源包括:

‌列式存储‌ :Parquet(默认格式)、ORC
‌文本格式‌ :JSON、CSV、TXT
‌关系数据库‌ :通过 JDBC 连接 MySQL、PostgreSQL 等
‌大数据生态‌ :Hive 表、HDFS 文件

其他来源‌ :Avro、XML(通常需要额外库)

每种数据源在性能上有显著差异,例如 Parquet 采用列式存储,在分析型查询中性能最优。

例子

java 复制代码
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

public class a_SparkSql_Env {
    public static void main(String[] args) {

        SparkSession sparkSession = SparkSession.builder().master("local").appName("sparksql").getOrCreate();

        Dataset<Row> json = sparkSession.read().option("spark.sql.adaptive.enabled",true).json("input/user.json");

        json.createOrReplaceTempView("user");

        json.select("age").show();

//        String sql = "select age from user";
//        Dataset<Row> df = sparkSession.sql(sql);


//        df.show();

        sparkSession.close();
    }
}

更多例子参见官网:spark sql数据源

配置优化策略‌:

‌并行度调整‌ :设置 spark.sql.shuffle.partitions 优化 shuffle 性能

内存缓存‌ :对频繁访问的表使用 spark.catalog.cacheTable() 或 dataFrame.cache()
数据源特定优化‌:如 Parquet 的谓词下推、ORC 的索引使用

读取性能调优技巧‌:

启用 spark.sql.adaptive.enabled=true 实现自适应查询执行

设置 spark.sql.files.maxPartitionBytes 控制分区大小

使用 spark.sql.autoBroadcastJoinThreshold 优化小表广播

相关推荐
画***林1 小时前
雷家林诗歌集录一英文版Collected Poems of Lei Jialin, Volume I (English Edition)
数据库·sql
不光头强2 小时前
git知识点总结
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客2 小时前
Kibana:使用 ES|QL 构建地图,对国家或地区的指标进行对比
大数据·数据库·elasticsearch·搜索引擎·信息可视化·全文检索·kibana
fuzamei8882 小时前
AI+区块链:为数字金融构建可信交易底座—吴思进出席“中国数字金融独角兽榜单2025交流会”
大数据·人工智能
vortex52 小时前
ORM是什么?如何理解ORM?ORM的优缺点?
java·数据库·sql·mysql·oracle·orm
盟接之桥2 小时前
盟接之桥--说制造:从“找缝隙”到“一万米深”——庖丁解牛式的制造业精进之道
大数据·前端·数据库·人工智能·物联网·制造
l1t3 小时前
在duckdb 递归CTE中实现深度优先搜索DFS
sql·算法·深度优先·duckdb·cte
司马阅-SmartRead3 小时前
学术研究与产业实践深度融合:司马阅AI合伙人冀文辉亮相「首届创新管理与JPIM论文工作坊」,产学研一体化推动企业AI落地
大数据·人工智能
kk哥88993 小时前
Git 远程仓库操作
大数据·git·elasticsearch
晨曦5432103 小时前
MySQL8.0窗口函数实战指南
sql