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

相关推荐
uesowys11 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_567811 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
CRzkHbaXTmHw11 小时前
探索Flyback反激式开关电源的Matlab Simulink仿真之旅
大数据
七夜zippoe11 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥11 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿12 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
忆~遂愿12 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
麦聪聊数据12 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
米羊12113 小时前
已有安全措施确认(上)
大数据·网络
人道领域14 小时前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法