任务编排中的跨库Spark SQL节点,主要针对各类跨库数据同步和数据加工场景,您可以通过编写Spark SQL,完成各种复杂的数据同步或数据加工的任务开发。
前提条件
- 支持的数据库类型:
- MySQL:RDS MySQL、PolarDB MySQL引擎、MyBase MySQL、PolarDB-X、AnalyticDB MySQL版、其他来源MySQL
- SQL Server:RDS SQL Server、MyBase SQL Server、其他来源SQL Server
- PostgreSQL:RDS PostgreSQL、PolarDB PostgreSQL引擎、MyBase PostgreSQL、AnalyticDB PostgreSQL版、其他来源PostgreSQL
- Oracle
- DB2
- MaxCompute
- Hologres
- OSS
- 若需要添加OSS引用,建议您提前获取OSS文件路径或录入OSS。详情请参见录入对象存储OSS。
应用场景
跨库Spark SQL任务主要应用于跨库数据同步和跨库数据加工:
- 跨库数据同步:
- 在线库同步到数据仓库,用于数据加工。在线业务会产生大量的数据,当需要对这些数据进行加工分析时,一般需要将在线业务的数据同步到专门用于数据加工和分析的数据仓库,再进行数据分析。
- 数据仓库的数据回流到在线库,用于数据查询。在数据仓库中对数据进行加工分析后,往往需要将数据同步回在线库中,以便在线应用提供相关的数据分析和统计服务。
示例:某消费服务平台使用的是MySQL数据库,需要在数据仓库AnalyticDB PostgreSQL版中对消费数据进行消费金额、消费笔数等的统计分析,将统计分析后的数据回传到消费服务平台上,供用户进行在线查询。
- 将MySQL中的增量消费数据同步到AnalyticDB PostgreSQL版中,Spark SQL语句如下:
INSERT INTO adb_dw.orders SELECT * FROM mysql_db.orders WHERE dt>${bizdate} AND dt<=${tomorrow}
- 将AnalyticDB PostgreSQL版中加工后的数据同步到MySQL中,Spark SQL语句如下:
INSERT INTO mysql_db.orders_month SELECT * FROM adb_dw.orders_month WHERE dt=${bizdate}
- 跨库数据加工:
跨多个库的数据写入到在线库中,实现在线应用中直接查询数据的功能。
示例:某电商企业的交易数据保存在MySQL在线库中,而员工数据保存在HR系统中,系统使用的数据库为Oracle,当企业需要按部门统计销售额时,需要对部门、员工和交易数据进行关联查询。以下Spark SQL语句可以实现将mysql_db在线库的交易流水表sales与oracle_db库的用户表users进行关联,并将关联后的数据按部门名称分组,统计交易笔数和金额,加工后的数据写入到mysql_db在线库中。
INSERT INTO mysql_db.dept_sales SELECT dept_name,trade_date, COUNT(*) cnt, SUM(amt) amt FROM mysql_db.sales t1 JOIN oracle_db.users t2 ON t1.emp_id=t2.id WHERE t1.trade_date=${bizdate} GROUP BY t2.dept_name
功能特性
- 跨库数据处理:支持使用SQL语句操作不同数据库中的数据,数据生态较全面,可通过扩展支持各种数据源。
- 大数据量处理:支持快速处理较大规模的数据(十万条以上数据)。
- Spark SQL语法:基于Spark 3.1.2版本部署,提供该版本所有语法特性和原生函数。原生函数包括聚合函数、窗口函数、数组函数、Map函数、日期和时间处理函数、JSON处理函数等。更多信息,请参见Spark SQL官方文档。
- 兼容标准SQL:通过标准的SQL语句,也可实现跨库数据同步和数据加工。
说明
- Spark SQL任务节点基于Spark计算引擎运行,单个任务单次处理数据请不要超过200万条,否则可能影响任务运行效率。
- 因计算资源有限,任务运行高峰期无法保证计算时效。
- Serverless:Spark SQL任务是基于Spark引擎进行数据处理的无服务器化计算服务,用户无需预购计算资源和维护资源,没有运维和升级成本。
- 支持的SQL语句包括:CREATE TABLE, CREATE SELECT, DROP TABLE, INSERT, INSERT SELECT, ALTER TABLE,
TRUNCATE, SET, ANALYZE, MSCK REPAIR。
说明
- TRUNCATE语句仅支持OSS类型的表,其他类型执行无效果。
- 不支持的SQL语句包括:SELECT、DELETE、UPDATE、CREATE DATABASE、DROP DATABASE。
- 支持OSS文件存储数据源,包括CSV、JSON、PARQUET、ORC多种文件格式。