Scala生态中有没有类Spark DataFrame结构且支持SQL查询的轻量化库?
符合需求的Scala轻量类DataFrame库推荐
以下是满足单节点运行、类Spark DataFrame结构、支持SQL查询需求的常用第三方库:
- Frameless
是参考Spark DataFrame API实现的纯Scala轻量库,无需Spark集群/ runtime环境,单进程即可运行。提供了类型安全的二维表格结构,内置SQL解析引擎,支持SELECT、JOIN、过滤、聚合等全量常规SQL操作,依赖体积远小于Spark,完全适配无并行计算需求的业务场景。
基础使用示例:import frameless._ import frameless.syntax._ // 定义样例类对应表结构 case class User(id: Int, name: String, age: Int) // 从本地集合初始化表格 val userTable = TypedDataset.create(Seq(User(1, "张三", 25), User(2, "李四", 30))) // 直接执行SQL查询 val queryResult = userTable.sql("SELECT name FROM dataset WHERE age > 28") - ScalaTable
专门为单节点Scala场景设计的内存表格库,API设计高度对齐Spark DataFrame,支持列操作、行过滤、分组聚合等常规操作,同时内置轻量SQL解析器,可以直接传入SQL语句对表格进行查询,整体依赖仅数百KB,没有任何分布式相关的冗余组件,启动速度和执行延迟都远优于Spark。 - DuckDB Scala绑定
DuckDB本身是嵌入式分析型数据库,其官方Scala绑定提供了类DataFrame的API封装,可以直接将Scala集合转换为表格结构,支持完整的SQL:2016标准查询,性能优于大部分纯Scala实现的内存SQL库,适合处理中等规模的单节点表格数据,所有计算都在当前进程内完成,无需启动独立服务,依赖体积也远小于Spark。
基础使用示例:import java.sql.DriverManager // 初始化嵌入式DuckDB连接 val conn = DriverManager.getConnection("jdbc:duckdb:") val stmt = conn.createStatement() // 直接从Scala集合创建表 stmt.execute("CREATE TABLE users AS SELECT * FROM (VALUES (1, '张三', 25), (2, '李四', 30)) t(id, name, age)") // 执行SQL查询返回结果 val rs = stmt.executeQuery("SELECT name FROM users WHERE age > 28")
内容的提问来源于stack exchange,提问作者Devavrata
相关产品推荐
相关产品推荐

