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 优化小表广播

相关推荐
STLearner1 小时前
WSDM 2026 | 时间序列(Time Series)论文总结【预测,表示学习,因果】
大数据·论文阅读·人工智能·深度学习·学习·机器学习·数据挖掘
亚马逊云开发者3 小时前
【Bedrock AgentCore】AI Agent 回答不一致怎么办?双 Memory 架构实现服务标准化(附完整代码)
大数据·人工智能·架构
℡終嚸♂6803 小时前
FlowiseAI 任意文件上传 CTF Writeup
sql·web安全
与衫4 小时前
[特殊字符] 解决 DataHub 无法解析复杂 SQL 血缘的问题(gsp-datahub-sidecar 实测)
数据库·sql
大嘴皮猴儿5 小时前
从零开始学商品图翻译:小白也能快速掌握的多语言文字处理与上架技巧
大数据·ide·人工智能·macos·新媒体运营·xcode·自动翻译
雷工笔记5 小时前
《为什么 10 倍增长比 2 倍更容易》读书笔记:反内卷的指数级增长破局法
大数据
captain_AIouo5 小时前
OZON航海引领者Captain AI指引运营新航向
大数据·人工智能·经验分享·aigc
K3v6 小时前
【git】删除本地以及远端已经合并到master的分支
大数据·git·elasticsearch
53AI7 小时前
智能调度赋能交通行业:从经验驱动到数据智能的跨越
大数据·人工智能·知识库·智能调度·53ai
黎阳之光8 小时前
黎阳之光核工厂202应急管控平台|全域实景孪生,筑牢核安全最后一道防线
大数据·人工智能·算法·安全·数字孪生