Sparklyr 无法在 spark_apply 中引用 table

Sparklyr cannot reference table in spark_apply

我想使用 spark_apply 迭代多个数据过程来生成特征。为此,我需要引用已加载到 spark 中的表,但出现以下错误:

ERROR sparklyr: RScript (3076) terminated unexpectedly: object 'ref_table' not found

一个可重现的例子:

ref_table <-   sdf_along(sc, 10)
apply_table <- sdf_along(sc, 10)

spark_apply(x = apply_table, 
            f = function(x) {
              c(x, ref_table)
            })

我知道我可以在函数内部引用库,但不确定如何调用数据。我是 运行 本地 spark 集群,通过 rstudio。

不幸的是,这里的失败是意料之中的。

Apache Spark,由于基于它的平台,不支持像这样的嵌套转换。您不能使用工作程序代码中的嵌套转换、分布式对象或 Spark 上下文(spark_connection,在 sparklyr 的情况下)。

有关详细说明,请查看我对 的回答。

您的问题没有提供足够的上下文来确定此处的最佳行动方案,但通常有两种可能的解决方案:

  • 只要其中一个数据集小到可以存储在内存中,就可以直接在闭包中将其作为普通 R 对象使用。
  • 将您的问题重新表述为 join 或笛卡尔积(Spark 的 crossJoin)。