Apache spark sql Spark中的惰性评估。Spark如何从DB加载数据
假设我们将限制设置为100,并且Spark应用程序连接到具有百万条记录的数据库。Spark是加载所有百万条记录还是加载100×100?Spark如何从数据库加载数据?它取决于数据库类型及其连接器实现。当然,对于分布式处理框架,分布式数据摄取始终是构建连接器的主要目标 举个简单的例子,如果表中有一(1 Mil)条记录,并且在加载()时将分区数定义为100,那么理想情况下,读取任务将分配给执行器,以便每个执行器读取一系列(10000)条记录,并将它们存储在内存中相应的分区中。看 在Spark UI中,您可以看到numPartitions指示启动的任务数。每个任务都分布在执行器中,这可以通过JDBC接口提高读写的并行性 Spark提供了灵活的接口(),允许我们构建自己的自定义数据源连接器。这里的主要设计关键是根据定义的分区数量并行化读取操作。还要检查()以了解分布式CSV摄取在Spark中的工作方式 更新 跨多个工作线程从JDBC连接读取数据Apache spark sql Spark中的惰性评估。Spark如何从DB加载数据,apache-spark-sql,Apache Spark Sql,假设我们将限制设置为100,并且Spark应用程序连接到具有百万条记录的数据库。Spark是加载所有百万条记录还是加载100×100?Spark如何从数据库加载数据?它取决于数据库类型及其连接器实现。当然,对于分布式处理框架,分布式数据摄取始终是构建连接器的主要目标 举个简单的例子,如果表中有一(1 Mil)条记录,并且在加载()时将分区数定义为100,那么理想情况下,读取任务将分配给执行器,以便每个执行器读取一系列(10000)条记录,并将它们存储在内存中相应的分区中。看 在Spark UI中
df = spark.read.jdbc(
url=jdbcUrl,
table="employees",
column="emp_no",
lowerBound=1,
upperBound=100000,
numPartitions=100
)
display(df)
在上面的示例代码中,我们使用JDBC read在emp_no
列上使用partitionColumn
、lowerBound
、upperBound
和numPartitionsparameters
将读取的表拆分为多个执行器