apache-spark - 通过 JDBC 从 RDBMS 读取时在 spark 中进行分区

标签 apache-spark jdbc apache-spark-sql partitioning

我在集群模式下运行 spark 并通过 JDBC 从 RDBMS 读取数据。

根据 Spark docs ,这些分区参数描述了从多个工作线程并行读取时如何对表进行分区:

  • partitionColumn
  • lowerBound
  • upperBound
  • numPartitions

  • 这些是可选参数。

    如果我不指定这些会发生什么:
  • 只有 1 个 worker 读取了整个数据?
  • 如果它仍然是并行读取,它如何分区数据?
  • 最佳答案

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

    也可以看看:

  • How to optimize partitioning when migrating data from JDBC source?
  • How to improve performance for slow Spark jobs using DataFrame and JDBC connection?
  • 关于apache-spark - 通过 JDBC 从 RDBMS 读取时在 spark 中进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43150694/

    相关文章:

    json - Spark对json的异常处理

    java - JDBC 删除数据库中具有特定时间戳的行

    Spring 启动 : How to externalize JDBC datasource configuration?

    scala - SPARK - 使用 RDD.foreach 创建 Dataframe 并在 Dataframe 上执行操作

    hadoop - Spark 在查询 Hadoop 时给出 InvalidProtocolBufferException

    apache-spark - saveAsTable 和 insertInto 在不同的 SaveMode 下有什么区别?

    java - 从 IDE 运行 Spark SQL 应用程序的 setJars() 方法

    java - 为什么 INSERT 查询在此 HttpServer 代码中不起作用

    java - Apache Spark 中的数据集

    python - pySpark/Python 遍历数据框列,检查条件并填充另一列