0
点赞
收藏
分享

微信扫一扫

SparkJDBC读写数据库实战

看山远兮 2024-02-13 阅读 8

默认的操作

  1. 代码
    val df = spark.read
    .format("jdbc")
    .option("url", "jdbc:postgresql://localhost:5432/testdb")
    .option("user", "username")
    .option("password", "password")
    .option("driver", "org.postgresql.Driver")
    .option("dbtable", "test_table")
    .load()
  2. 讲解
    上面这种默认情况使用jdbc driver读数据库(如pg库),仅仅会使用一个task读数据,也就是只有一个分区。要证明这一点可以通过两种方式:
  • 查看web ui
    在这里插入图片描述
    你会看到只有一个task。
  • 通过getNumPartitions方法
    int numPartitions = ds.rdd().getNumPartitions();
    你会看到numPartitions=1。

对数值、日期、时间戳字段分区

spark当然不可能只能用一个task读数据库,这样如果数据库数据量大了,效率将会非常低,官方提供了一些参数,可以控制并发读取数据库任务的数量。
想了解所有的参数,

举报

相关推荐

0 条评论