赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 实践教程
  5. 计算与分析
  6. SparkSparkSQL
  7. 细则剖析
  8. 批计算谓词下推配置

批计算谓词下推配置

  • 细则剖析
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

批计算中的多元索引查询方式支持自定义谓词下推配置。目前只能设置与Long、String类型的列做大小比较的谓词是否下推。

背景信息

谓词下推适用于当多元索引中多字段过滤的中间结果数据量较大,中间结果的合并较为耗时的场景。此时可以将某些字段的过滤从存储层(表格存储)提到计算层(Spark)处理,提高查询效率。

例如select * from table where a = 10 and b < 999999999;,如果a = 10返回的结果只有1000条,b < 999999999返回的结果有一亿条,则在存储层将1000条结果与一亿条结果做合并比较耗时,此时可以将b < 999999999提到计算层,Spark只需要对存储层返回的1000条数据进行过滤,大大降低了存储层的压力。

谓词支持

Spark谓词支持情况请参见下表。

Spark

是否支持

SQL语句举例

And

是

select * from table where a > 1 and b < 0;

Or

是

select * from table where a > 1 or b < 0;

Not

是

select * from table where a != 1;

EqualTo

是

select * from table where a = 1;

Not+EqualTo

是

select * from table where a != 1;

IsNull

是

select * from table where a is null;

返回table数据表中没有a列的行。

In

是

select * from table where a in {1,2,3};

默认最大限制为1024。

LessThan

是

select * from table where a < 10;

当SQL语句中使用该谓词的列的数据类型为Long或者String时,可以自定义谓词下推配置。

LessThanOrEqual

是

select * from table where a <=10;

当SQL语句中使用该谓词的列的数据类型为Long或者String时,可以自定义谓词下推配置。

GreaterThan

是

select * from table where a > 10;

当SQL语句中使用该谓词的列的数据类型为Long或者String时,可以自定义谓词下推配置。

GreaterThanOrEqual

是

select * from table where a >= 10;

当SQL语句中使用该谓词的列的数据类型为Long或者String时,可以自定义谓词下推配置。

StringStartsWith

是

select * from table where a like "tablestore%";

返回table数据表中a列以tablestore为前缀(prefix)的行。

地理坐标(String JSON)中心距离

是

select * from table where val_geo = '{"centerPoint":"3,0", "distanceInMeter": 100000}';

由中心点和距离决定的地理圆圈范围。

地理坐标(String JSON)长方形

是

select * from table where geo = '{"topLeft":"8,0", "bottomRight": "0,10"}';

由左上角和右下角决定的地理长方形范围。

地理坐标(String JSON)多边形

是

select * from table where geo = '{"points":["5,0", "5,1", "6,1", "6,10"]}';

由多个点组成的地理多边形范围。

谓词下推配置

谓词下推配置的参数需要在创建Spark外表时配置。谓词下推规则如下:

  • 当过滤条件中的逻辑谓词只存在AND和NOT时,可以自定义谓词是否下推。

  • 当过滤条件中的逻辑谓词存在OR时,谓词全部下推,自定义的谓词下推配置(例如E-MapReduce SQL方式的参数配置push.down.range.long=false和push.down.range.string=false)不会生效。

不同的逻辑谓词和下推配置组合使用时,SQL语句举例及预期效果请参见下表。

逻辑谓词

下推配置

SQL语句举例

预期效果

全为AND

  • push.down.range.long=true

  • push.down.range.string=true

select * from table where val_long1 > 1000 and val_long1 is null and name like 'table%' and pk in {12341,213432};

SQL正常。

谓词全部下推。

全为AND

  • push.down.range.long=false

  • push.down.range.string=true

select * from table where val_long1 > 1 and name like 'table%';

与Long类型做大小比较的谓词不会下推。

该谓词由Spark计算层进行过滤,Spark计算层获取name like 'table%'的数据,val_long1 > 1由业务代码进行过滤。

全为AND

  • push.down.range.long=true

  • push.down.range.string=false

select * from table where val_string1 > 'string1' and name like 'table%';

与String类型做大小比较的谓词都不会下推。

该谓词交由Spark计算层进行过滤,Spark计算层获取name like 'table%'的数据,val_string1 > 'string1'由业务代码进行过滤。

全为AND

存在地理位置类型列

select * from table where val_geo = '{"centerPoint":"3,0", "distanceInMeter": 100000}' and val_long1 = 37691900 and val_long2 > 2134234;

SQL正常。

val_long2 > 2134234能否由Spark计算层过滤取决于push.down.range.long的配置。

存在OR

  • push.down.range.long=true

  • push.down.range.string=true

select * from table where val_long1 > 1000 or val_long1 is null or name like 'table%' and pk in {12341,213432};

SQL正常。

谓词全部下推。

存在OR

存在地理位置类型列

select * from table where val_geo = '{"centerPoint":"3,0", "distanceInMeter": 100000}' or val_long1 = 37691900;

SQL正常。

谓词全部下推。

存在OR

  • push.down.range.long=false

  • push.down.range.string=true

  • SQL语句中存在rangeLong的过滤字段

select * from table where val_long1 > 1 or name like 'table%';

此时自定义谓词配置不生效,谓词全部下推。

存在OR

  • push.down.range.long=true

  • push.down.range.string=false

  • SQL语句中存在rangeString的过滤字段

select * from table where val_string1 > 'string1' or name like 'table%';

此时自定义谓词配置不生效,谓词全部下推。

相关文章

批计算谓词下推配置 2025-04-22 14:36

批计算中的多元索引查询方式支持自定义谓词下推配置。目前只能设置与Long、String类型的列做大小比较的谓词是否下推。 背景信息 谓词下推适用于当多元索引中多字段过滤的中间结果数据量较大,中间结果的合并较为耗时的场景

流计算实现细节 2025-04-22 14:36

本文介绍了对接Structured Streaming微批模式的过程以及表格存储对接Spark Structured Streaming的详细接入流程。 背景信息 在对接Spark Structured Streaming的微批模式

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号