【问题标题】:Spark batch processing on driver驱动程序上的 Spark 批处理
【发布时间】:2022-01-21 04:43:42
【问题描述】:

我有一组 parquet 文件,我想将它们加载到数据库中,该数据库是 spark 中不受支持的接收器。与数据库通信的对象不能在诸如 foreach 之类的 spark 函数中使用,因为它无法序列化。我也不能使用 collect() 因为数据不适合内存。

spark 中是否有一个功能可以遍历驱动程序实例内存中的 RDD?

【问题讨论】:

  • 你找到答案了吗?

标签: java apache-spark apache-spark-sql bigdata


【解决方案1】:

你不想批处理你想处理by partition:

ForeachParition 将允许您创建多个关闭器以将数据写入 [不支持的数据库]。您需要在内部启动与 ForeachPartition 代码块的数据库连接,以便它在每个执行程序内部创建连接。

(ForeachPartition 代码块中的代码在执行程序而不是驱动程序上运行。这将绕过尝试在驱动程序上启动连接,然后将该实时连接发送到所有执行程序。-->您不断收到的序列化错误.)

有很多很好的资源可以帮助解释闭包及其含义。但是如果你只是想深入了解它,只需在 ForeachPartition 代码块中启动数据库连接即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多