Spark连接到MySQL并执行查询为什么速度会快
2个回答
2020-08-13 · MySQL开源数据库领先者
关注
展开全部
在已有的 MySQL 服务器之上使用 Apache Spark (无需将数据导出到 Spark 或者 Hadoop 平台上),这样至少可以提升 10 倍的查询性能。使用多个 MySQL 服务器(复制或者 Percona XtraDB Cluster)可以让我们在某些查询上得到额外的性能提升。你也可以使用 Spark 的缓存功能来缓存整个 MySQL 查询结果表。
思路很简单:Spark 可以通过 JDBC 读取 MySQL 上的数据,也可以执行 SQL 查询,因此我们可以直接连接到 MySQL 并执行查询。那么为什么速度会快呢?对一些需要运行很长时间的查询(如报表或者BI),由于 Spark 是一个大规模并行系统,因此查询会非常的快。MySQL 只能为每一个查询分配一个 CPU 核来处理,而 Spark 可以使用所有集群节点的所有核。在下面的例子中,我们会在 Spark 中执行 MySQL 查询,这个查询速度比直接在 MySQL 上执行速度要快 5 到 10 倍。
另外,Spark 可以增加“集群”级别的并行机制,在使用 MySQL 复制或者 Percona XtraDB Cluster 的情况下,Spark 可以把查询变成一组更小的查询(有点像使用了分区表时可以在每个分区都执行一个查询),然后在多个 Percona XtraDB Cluster 节点的多个从服务器上并行的执行这些小查询。最后它会使用map/reduce 方式将每个节点返回的结果聚合在一起形成完整的结果。
思路很简单:Spark 可以通过 JDBC 读取 MySQL 上的数据,也可以执行 SQL 查询,因此我们可以直接连接到 MySQL 并执行查询。那么为什么速度会快呢?对一些需要运行很长时间的查询(如报表或者BI),由于 Spark 是一个大规模并行系统,因此查询会非常的快。MySQL 只能为每一个查询分配一个 CPU 核来处理,而 Spark 可以使用所有集群节点的所有核。在下面的例子中,我们会在 Spark 中执行 MySQL 查询,这个查询速度比直接在 MySQL 上执行速度要快 5 到 10 倍。
另外,Spark 可以增加“集群”级别的并行机制,在使用 MySQL 复制或者 Percona XtraDB Cluster 的情况下,Spark 可以把查询变成一组更小的查询(有点像使用了分区表时可以在每个分区都执行一个查询),然后在多个 Percona XtraDB Cluster 节点的多个从服务器上并行的执行这些小查询。最后它会使用map/reduce 方式将每个节点返回的结果聚合在一起形成完整的结果。
展开全部
你用sql语句查,那是自家查自家。
应用程序需要1.连接2.命令3.接收结果,不考虑数据处理其他打开关闭什么的,就比sql语句多了2步。
如举例,你要有个朋友(有钱的情况),然后借钱,结果还不一定能接到。
而老婆,她又没有钱你知道,她不可能不给你钱而饿着你,结果是一定借到还不用还。
sql语句就像是原配的老婆,继承在数据库操作平台中,不快还得了啊。
应用程序:
万一连接写错了,报错,命令写错了报错,结果接收不不如意,这都要考虑(简单的try catch 也影响性能)。
还有一个最致命的问题,你连的未必是本地数据库,这又牵扯到网速问题。
综上所述,慢是必然的,尤其是mysql,在配置优化和存储过程上多下点功夫,会提高点查询速度。
应用程序需要1.连接2.命令3.接收结果,不考虑数据处理其他打开关闭什么的,就比sql语句多了2步。
如举例,你要有个朋友(有钱的情况),然后借钱,结果还不一定能接到。
而老婆,她又没有钱你知道,她不可能不给你钱而饿着你,结果是一定借到还不用还。
sql语句就像是原配的老婆,继承在数据库操作平台中,不快还得了啊。
应用程序:
万一连接写错了,报错,命令写错了报错,结果接收不不如意,这都要考虑(简单的try catch 也影响性能)。
还有一个最致命的问题,你连的未必是本地数据库,这又牵扯到网速问题。
综上所述,慢是必然的,尤其是mysql,在配置优化和存储过程上多下点功夫,会提高点查询速度。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询