首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SparkSql 中外连接查询中的谓词下推规则

SparkSql SparkSql是架构在spark计算框架之上的分布式Sql引擎,使用DataFrame和DataSet承载结构化和半结构化数据来实现数据复杂查询处理,提供的DSL可以直接使用scala...,那么就会把过滤交给底层数据源来完成,这就是SparkSql中的谓词下推(至于哪些数据源能高效完成数据的过滤以及SparkSql是又如何完成高效数据过滤的则不是本文讨论的重点)。...外连接查询和连接条件 外连接查询(outter join),分为左外连接查询、右外连接查询以及全外连接查询,全外连接使用的场景不多,所以本文重点讨论的是左连接查询和右连接查询。...而上边提到的谓词下推能否在两类条件中使用,在SparkSql中则有特定的规则,以左外连接查询为例,规则如下: ? 接下来对这个表格中的规则进行详细的分析。...至此,左联接查询的四条规则分析完了,可以看出,在SparkSql中对于外连接查询时的过滤条件,并不能在所有情况下都用来进行数据源的过滤,如果使用得当会极大的提升查询性能,如果使用不当,则会产生错误的查询结果

1.7K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【大数据】SparkSql连接查询中的谓词下推处理(一)

    1.SparkSql SparkSql是架构在Spark计算框架之上的分布式Sql引擎,使用DataFrame和DataSet承载结构化和半结构化数据来实现数据复杂查询处理,提供的DSL可以直接使用scala...2.连接查询和连接条件 Sql中的连接查询(join),主要分为内连接查询(inner join)、外连接查询(outter join)和半连接查询(semi join),具体的区别可以参考wiki的解释...要解答这两个问题我们需要了解SparkSql的Sql语句处理逻辑,大致可以把SparkSql中的查询处理流程做如下的划分: ?...上边提到,我们可以通过封装SparkSql的Data Source API完成各类数据源的查询,那么如果底层数据源无法高效完成数据的过滤,就会执行全局扫描,把每条相关的数据都交给SparkSql的Filter...至于第二个例外,则涉及了SparkSql中的一个优化,所以需要单独介绍。 4.3.分区表使用OR连接过滤条件 如果两个表都是分区表,会出现什么情况呢?我们先来看如下的查询: ?

    97020

    大数据 | SparkSQL连接查询中的谓词下推处理(二)

    在《SparkSql连接查询中的谓词下推处理(一)》中,我们介绍了一些基本的概念,并对内连接查询时的一些基本下推规则进行了分析。...本篇文章要介绍的是--外连接查询中的谓词下推规则,这相比内连接中的规则要复杂一些,不过使用简单的表格来进行分析也是可以分析清楚的。先上表: ? 我们以左外连接查询为例,先总结规矩如下: ?...究其原因,是因为在SparkSQL中,把以上的查询解析成了如下的子查询: ? 这是一个非相关子查询,即完全可以先完成子查询,再完成父查询,子查询在查询过程中和外部查询没有关联关系。...SparkSQL中的等价处理语句是: ? 可以看出,也是解析成了一个非相关子查询来处理的。 4.右表join中条件不下推 这个应该是最违反常规理解的查询了,查询语句如下: ?...可以看出,在SparkSQL中对于外连接查询时的过滤条件,并不能在所有情况下都用来进行数据源的过滤,如果使用得当会极大的提升查询性能,如果使用不当,则会产生错误的查询结果,而这种错误结果又不易发觉,所以使用时要格外小心

    71330

    SparkSQL使用UDF函数代替MySQL空间函数读取MySQL空间字段

    一、问题描述 SparkSQL虽然可以访问MySQL数据,但是对于MySQL的空间字段,SparkSQL并没有提供内置函数去解析 二、问题分析 SparkSQL没有内置函数解析空间类型,需要手动编写...UDF函数实现 SparkSQL网络传输的数据格式是Byte数组,返回的数据格式中没有Geometry类型,需要将Geometry类型转成String类型返回 三、代码实现 1、自定义UDF函数...dbGeometry = wkbReader.read(wkb); dbGeometry.setSRID(srid); return dbGeometry; } 2、SparkSQL...spark.sql("SELECT id, ST_ASTEXT(point), ST_ASTEXT(polygon) FROM t_point_polygon").limit(10).rdd 四、知识拓展 1、MySQL...www.mysqlzh.com/doc/172.html http://dcx.sap.com/1201/zh/dbspatial/pg-api-spatial-st-geometry-type.html 2、MySQL

    2K10

    【大数据】SparkSql连接查询中的谓词下推处理(一)

    1.SparkSql SparkSql是架构在Spark计算框架之上的分布式Sql引擎,使用DataFrame和DataSet承载结构化和半结构化数据来实现数据复杂查询处理,提供的DSL可以直接使用scala...2.连接查询和连接条件 Sql中的连接查询(join),主要分为内连接查询(inner join)、外连接查询(outter join)和半连接查询(semi join),具体的区别可以参考wiki的解释...要解答这两个问题我们需要了解SparkSql的Sql语句处理逻辑,大致可以把SparkSql中的查询处理流程做如下的划分: ?...上边提到,我们可以通过封装SparkSql的Data Source API完成各类数据源的查询,那么如果底层数据源无法高效完成数据的过滤,就会执行全局扫描,把每条相关的数据都交给SparkSql的Filter...至于第二个例外,则涉及了SparkSql中的一个优化,所以需要单独介绍。 4.3.分区表使用OR连接过滤条件 如果两个表都是分区表,会出现什么情况呢?我们先来看如下的查询: ?

    1.8K20

    【大数据】SparkSql连接查询中的谓词下推处理(一)

    转自:vivo互联网技术 作者:李勇 1.SparkSql SparkSql是架构在Spark计算框架之上的分布式Sql引擎,使用DataFrame和DataSet承载结构化和半结构化数据来实现数据复杂查询处理...2.连接查询和连接条件 Sql中的连接查询(join),主要分为内连接查询 (inner join)、外连接查询 (outter join)和半连接查询 (semi join),具体的区别可以参考wiki...SparkSql中的谓 词下 推有两层含义,第一层含义是指由谁来完成数据过滤,第二层含义是指何时完成数据过滤。...上边提到,我们可以通过封装SparkSql的Data Source API完成各类数据源的查询,那么如果底层 数据源无法高效完成数据的过滤,就会执行全扫描,把每条相关的数据都交给SparkSql的Filter...但是,要完成这种优化,需要SparkSql的语义分析逻辑能够正确的分析出Sql语句所要表达的精确目的,所以分区字段在SparkSql的元数据中也是独立于其他普通字段,进行了单独的标示,就是为了方便语义分析逻辑能区别处理

    1.4K30

    mysql的左右连接_MySQL之左连接与右连接

    连接: select 列1,列2,列N from tableA left join tableB on tableA.列 = tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看...右连接: select 列1,列2,列N from tableA right join tableB on tableA.列 = tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看...如何记忆: 1.左右连接是可以相互转化的 2.可以把右连接转换为左连接来使用(并推荐左连接来代替右连接,兼容性会好一些) A 站在 B的左边 —》 B 站在 A的右边 A left join B —...内连接:查询左右表都有的数据,不要左/右中NULL的那一部分 内连接是左右连接的交集。 能否查出左右连接的并集呢?...目前的mysql是不能的,它不支持外连接,outer join,可以用union来达到目的。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    12.8K10

    SparkSQL使用UDF函数代替MySQL空间函数读取MySQL空间字段

    一、问题描述 SparkSQL虽然可以访问MySQL数据,但是对于MySQL的空间字段,SparkSQL并没有提供内置函数去解析 二、问题分析 SparkSQL没有内置函数解析空间类型,...需要手动编写UDF函数实现 SparkSQL网络传输的数据格式是Byte数组,返回的数据格式中没有Geometry类型,需要将Geometry类型转成String类型返回 三、代码实现 1、自定义...dbGeometry = wkbReader.read(wkb); dbGeometry.setSRID(srid); return dbGeometry; } 2、SparkSQL...spark.sql("SELECT id, ST_ASTEXT(point), ST_ASTEXT(polygon) FROM t_point_polygon").limit(10).rdd 四、知识拓展 1、MySQL...www.mysqlzh.com/doc/172.html http://dcx.sap.com/1201/zh/dbspatial/pg-api-spatial-st-geometry-type.html 2、MySQL

    2.3K00

    大数据 | SparkSQL连接查询中的谓词下推处理(二)

    在《SparkSql连接查询中的谓词下推处理(一)》中,我们介绍了一些基本的概念,并对内连接查询时的一些基本下推规则进行了分析。...本篇文章要介绍的是--外连接查询中的谓词下推规则,这相比内连接中的规则要复杂一些,不过使用简单的表格来进行分析也是可以分析清楚的。先上表: ? 我们以左外连接查询为例,先总结规矩如下: ?...究其原因,是因为在SparkSQL中,把以上的查询解析成了如下的子查询: ? 这是一个非相关子查询,即完全可以先完成子查询,再完成父查询,子查询在查询过程中和外部查询没有关联关系。...SparkSQL中的等价处理语句是: ? 可以看出,也是解析成了一个非相关子查询来处理的。 4.右表join中条件不下推 这个应该是最违反常规理解的查询了,查询语句如下: ?...可以看出,在SparkSQL中对于外连接查询时的过滤条件,并不能在所有情况下都用来进行数据源的过滤,如果使用得当会极大的提升查询性能,如果使用不当,则会产生错误的查询结果,而这种错误结果又不易发觉,所以使用时要格外小心

    91720

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券