【问题标题】:Spark JDBC data fetch Optimization from relational databaseSpark JDBC从关系数据库中获取数据优化
【发布时间】:2015-08-18 06:37:27
【问题描述】:

a) 与传统的 java JDBC 调用相比,Spark 是否可以优化从关系数据库中获取数据的方法。 b) 如何在运行 Spark 查询时减少数据库负载,因为我们将直接针对所有查询访问生产数据库。假设 Spark 报告案例的生产中有 3000 万条订单记录和 1.5 亿条订单行记录。

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    Re a)

    • 您当然可以 .cache() Spark 应用程序中的数据帧,以避免在 Spark 应用程序的生命周期内重复执行该数据帧的 JDBC

    • 您可以使用 partitionColumn、lowerBound、upperBound 和 numPartitions 属性通过范围分区并行 JDBC 调用读取数据帧。这对分布式(分区)数据库后端很有意义。

    • 您可以将集成的 Spark 集群与分布式数据库引擎(如 IBM dashDB)一起使用,该引擎运行与数据库分区位于同一位置的 Spark 执行程序,并在 Spark 和数据库之间执行本地 IPC 数据交换机制:https://ibmdatawarehousing.wordpress.com/category/theme-ibm-data-warehouse/

    b) 如果适用,上述 Spark 端缓存会有所帮助。此外,Spark 中的 JDBC 数据源确实尝试将预测和过滤器从您的 Spark SQL/数据帧操作推到底层 SQL 数据库。检查命中数据库的结果 SQL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2018-01-07
      • 2020-09-18
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多