Spark JDBC数据从关系数据库中获取优化

时间:2015-08-18 06:37:28

标签: apache-spark apache-spark-sql

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

1 个答案:

答案 0 :(得分:0)

回复a)

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

  • 您可以使用partitionColumn,lowerBound,upperBound和numPartitions属性读取via range分区并行JDBC调用中的数据帧。这对于分布式(分区)数据库后端是有意义的。

  • 您可以将集成的Spark集群与分布式数据库引擎结合使用,例如IBM dashDB,它运行与数据库分区共存的Spark执行程序,并在Spark和数据库之间运行本地IPC数据交换机制:{{3 }}

b)如果适用,上面提到的Spark端缓存可以提供帮助。此外,Spark中的JDBC数据源会尝试将源自Spark SQL /数据帧操作的预测和过滤器下推到底层SQL数据库。检查生成数据库的SQL。

相关问题