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
)。
我想使用 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
)。