0

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

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

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

问题:它适用于小型/中型表,但在大型表的情况下我会得到 OutOfMemory。

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

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

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

谢谢

4

0 回答 0