1

我正在尝试使用 JDBC 从数据库表中读取一些内容:

val df = spark.read.jdbc("<database url>", "<some table name>", <some DbProperties>)

然后将其写入另一个数据库:

df.write.mode(SaveMode.Append).jdbc("<other database url>", "<same table name>", <some DbProperties>)
  1. 如果我们没有在 Db 属性中指定选项, Spark 用于将表从数据库读取到numPartitions的默认值是多少?numPartitionsdf
  2. 如果我想将上面的df内容写入另一个数据库的另一个表中,如果我仍然不指定numPartitions,写入数据库时​​是否会创建并行连接?
  3. 假设在阅读时我给出numPartitions了 8,在将df其写入目标数据库时,如果numPartitions = 8没有我在写入时明确指定它,它仍然有效吗?
4

1 回答 1

3

如果您不指定 { partitionColumn, lowerBound, upperBound, numPartitions} 或 { predicates} Spark 将使用单个执行程序并创建单个非空分区。所有数据都将使用单个事务处理,读取既不会分布式也不会并行化。

也可以看看:

请查看 spark 文档以获取有关 spark JDBC 集成的更多信息

于 2020-07-09T18:23:18.027 回答