首页 > 解决方案 > 在 spark 中从 sql server 并行读取

问题描述

我正在使用 com.microsoft.sqlserver.jdbc.SQLServerDriver 在 spark 作业中从 sql server 读取数据。为了提高性能,需要并行读取数据。spark作业建立的连接数是否等于spark-submit命令中的核心数?

标签: sql-serverapache-sparkjdbc

解决方案


Apache Spark 的并行化单元是分区的数量和可以并行处理它们的可用工作人员。分区以不同的方式创建。对于分布式数据存储,它们是使用存储定义的。例如,Apache Kafka 将数据存储在由不同分区组成的主题中。Apache Spark 利用这一点来并行处理数据。

但是对于RDBMS,它是不同的,因为它们不是分布式的(至少是经典的),即数据存储在单个节点中并最终被复制。要在这种情况下使用 Apache Spark 分区,您必须在 JDBC 选项中定义分区列。您可以在此处找到更多详细信息https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html或在此处查看示例https://www.waitingforcode.com/apache-spark-sql/partitioning -rdbms-data-spark-sql-jdbc/读取

spark作业建立的连接数是否等于spark-submit命令中的核心数?

不,连接数将等于您的分区数。


推荐阅读