使用Spark处理庞大的数据库表

时间:2017-12-21 12:12:06

标签: apache-spark jdbc spark-jdbc

我有一个庞大的数据库表,其中包含数百万条记录。 每个记录都可以单独处理,并且必须转换为字符串。

所以我开始环顾四周,我想知道Spark是否可以在这种情况下帮助我。具体来说,我写了一些非常简单的东西:

session.read.jdbc(...).rdd
    .map(row => ...convert each row in a string)
    .saveAsTextFile(....)

问题:它与小型/中型表完美配合,但是如果有大型表,我会得到OutOfMemory。

即使我认为我得到了jdbc分区的工作方式(并且它正在工作),似乎session.read.jdbc只在整个数据集加载后才返回(即将每一行移动到map方法)。

是否可以使用这种方法或其他方法在读取每一行时转换(即处理)?

我已经看过下面评论中指出的类似问题了,但是那个用户正在进行聚合(df.count),而我只需要逐个迭代记录,所以我想知道这是不是“懒惰”迭代是可能的。

THX

0 个答案:

没有答案