【问题标题】:Can Apache Spark speed up the process of reading millions of records from Oracle DB and then writing these to a file?Apache Spark 能否加快从 Oracle DB 读取数百万条记录并将其写入文件的过程?
【发布时间】:2017-11-26 05:05:29
【问题描述】:

我是 Apache-Spark 的新手,

我需要从 Oracle 数据库中读取数百万(~500 万)条记录,然后对这些记录进行一些处理,并将处理后的记录写入文件。

目前,这是在Java中完成的,并且在这个过程中 - 数据库中的记录根据一些数据标准分为不同的子集 - 在Java进程中,4个线程并行运行 - 每个线程读取记录的子集,处理并将处理后的记录写入新文件 - 最后它将所有这些文件合并到一个文件中。

仍然需要半个小时左右才能完成整个过程。

所以我想知道,如果 Apache Spark 可以让这个过程快速从 Oracle DB 读取数百万条记录,处理这些记录,然后写入文件?

如果 Spark 可以加快这个过程,那么在我的过程中实现这一点的最佳方法是什么?另外在非集群环境下也有效吗?

感谢您的帮助。

【问题讨论】:

  • 为什么不在PL/SQL中进行处理呢?消除至少一大块不必要的 I/O
  • 您是否测量过当前设置的极限在哪里?是您的 Java 应用程序的处理速度,还是来自数据库的查找/传输速度?

标签: java oracle apache-spark mapreduce spark-streaming


【解决方案1】:

是的,您可以使用 Spark 做到这一点,它专为分布式处理而构建! http://spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases

您应该使用配置良好的 spark 集群来实现相同的目的。您需要根据需要添加更多工作节点来微调性能。

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2016-08-22
    • 2013-05-02
    • 1970-01-01
    • 2014-01-04
    • 2015-12-14
    相关资源
    最近更新 更多