Spark SQL执行方式

更新时间:

云原生数据仓库 AnalyticDB MySQL 版支持使用批处理和交互式两种方法执行Spark SQL,两种执行方式都直接与AnalyticDB for MySQL的元数据服务连通,可以读写AnalyticDB for MySQL的库表。本文介绍批处理和交互式两种执行方式的注意事项、适用场景、特点及启动方法。

批处理

注意事项

  • 使用批处理方式执行SQL时,必须在SQL执行开始处使用USE <database_name>;语法选择一个数据库。

  • SQL语句中指定表时,必须为database_name.table_name格式。

  • 批处理方式执行DML、DDLDQL等任何SQL语句时,只有返回执行成功或者失败,不返回数据。执行成功的结果会抽样一部分打印到日志中。如需查看SQL语句返回的数据,详情请参见查看Spark应用信息

适用场景

  • 执行多条相互依赖的SQL语句。

  • SQL语句需要严格的资源隔离。

  • 需要处理较大规模的数据,例如使用SQL执行一次性的ETL。

  • 有复杂的第三方依赖包需要上传,且这些包可能需要反复测试和替换。

特点

  • 批处理方式提交的SQL运行在单独的Spark应用中,可以保证稳定性。

  • 支持通过SQL语句描述独立的配置,如SET spark.sql.adaptive.coalescePartitions.minPartitionSize = 2MB;

  • 批处理方式执行的SQL中如果包含SELECT语句,这些SELECT语句的执行结果会抽样一部分打印到日志中,您可以在日志中查看。

启动方法

SQLConsole窗口,选择Job型资源组和Spark引擎。输入SQL语句后,单击立即执行

交互式执行

注意事项

  • 交互式执行的DDLDML语句的执行结果仅返回最多1000行数据。

  • 使用交互执行方式执行的DDL语句,只返回执行成功或者失败,不返回数据。例如执行CREATE TABLE语句,只提示成功或失败,不返回表中的数据,和开源社区保持一致。

  • Spark Interactive型资源组启动需要一定时间,如果出现启动时失败可以等待一定时间重试。

适用场景

  • 临时进行数据计算,无需返回所有数据。

  • 需要执行大量的DDL语句。

  • 希望在提交DQL语句后,可以立即开始执行, 且对资源隔离不敏感,能允许一定的失败。

特点

  • 资源隔离是线程级的。多个用户在同一个Spark应用中执行SQL,相互之间可能存在干扰。

  • 线程级的配置可以通过配置SQL生效。

  • 应用级别的配置,需要重启Spark Interactive型资源组才能生效。如需修改应用级别的配置,需要先停止Spark Interactive型资源组,参数配置完成后重新启动Spark Interactive型资源组

启动方式

SQLConsole窗口,选择Spark Interactive型资源组和Spark引擎。输入SQL语句后,单击立即执行