如何在 SparkR 中对数据帧的每一行执行一些第三方计算

How to perform some third party calculation on each row of the data frame in SparkR

我有一个 R 数据框,我已通过调用 createDataFrame 函数将其转换为 RDD。 RDD 有多个列,应该用于计算一个新列。 我需要通过 SparkR 调用 RQuantLib R 包的 AmericanOption 函数,并将返回值更新到同一数据帧的新列中。通常我们可以在其他编程语言中使用 foreach 来做到这一点,但不知道我们如何在 SparkR 中做到这一点,因为 map 函数也没有记录 https://spark.apache.org/docs/1.5.1/api/R/

一种方法是

  1. 将RDD转化为RDDLoL,列表的列表,
  2. SparkR:::将 RDDLoL 并行化为 parallelRDD
  3. 打电话 res <- collect(SparkR:::lapply(parallelRDD, foo))
  4. 将 res 附加到原始数据框的新列。