sql-server - 在 spark 中从 sql server 并行读取
问题描述
我正在使用 com.microsoft.sqlserver.jdbc.SQLServerDriver 在 spark 作业中从 sql server 读取数据。为了提高性能,需要并行读取数据。spark作业建立的连接数是否等于spark-submit命令中的核心数?
解决方案
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命令中的核心数?
不,连接数将等于您的分区数。
推荐阅读
- php - 在查询结果或查询比较中包含列名
- ruby-on-rails-5.2 - 按常用列关联关闭 3 个模型
- javascript - AngularJS ng-repeat orderBy / filter:在一种情况下调用后端的函数,在其他情况下在前端排序
- javascript - JavaScript 变量作用域
- arrays - 无法在 Vue 中响应实例
- java - NetBeans java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory] 在 javax.xml.bind.JAXB.unmarshal(JAXB.java:171)
- microsoft-graph-api - 无法通过事件字段 $select 和 $filter 消息
- php - 检查一个数字是否是另一个数字的倍数
- javascript - 将货币紧凑表示法(例如 '$1.5k')转换为整数(例如 1500)
- python - boost::python 如何使用函数成员作为python回调