gpt4 book ai didi

r - 如何对 SPARKR DataFrame 中列的每个值应用函数?

转载 作者:行者123 更新时间:2023-12-01 03:39:17 25 4
gpt4 key购买 nike

我对 SPARKR 比较陌生。我下载了 SPARK 1.4 并设置了 RStudio 以使用 SPARKR 库。但是我想知道如何将函数应用于分布式 DataFrame 列中的每个值,有人可以帮忙吗?
例如,

这完美地工作

myFunc <- function(x) { paste(x , "_hello")}
c <- c("a", "b", "c")
d <- lapply(c, myFunc)

如何使其适用于分布式数据帧。
目的是将“_hello”附加到 DF 列名称的每个值
DF <- read.df(sqlContext, "TV_Flattened_2.csv", source = "com.databricks.spark.csv", header="true")
SparkR:::lapply(DF$Name, myFunc)

在 SPARK 1.4 发布之前的 SPARKR alpha 版本中似乎有这个能力,为什么现在在 SPARK 1.4 正式发布中缺少这个?

最佳答案

使用 flatMap,您可以从 DataFrame 创建一个 RDD,并将该函数应用于所有项目。

c <- c("a", "b", "c")
df <- createDataFrame(sqlContext, as.data.frame(c))
myFunc <- function(x) { paste(x , "_hello")}
d <- flatMap(df, myFunc)
e <- createDataFrame(sqlContext, d)

然而,缺点是只在 DataFrame 的第一列上执行您期望的操作,它会跳过所有其他列。这在以下示例中可见:
c <- c("a", "b", "c")
df <- createDataFrame(sqlContext, as.data.frame(c,u=c(1,2,3)))
myFunc <- function(x) { paste(x , "_hello")}
d <- flatMap(df, myFunc)
e <- createDataFrame(sqlContext, d)

这给出了与第一个示例完全相同的输出,但是 df 以一个额外的列开始。

关于r - 如何对 SPARKR DataFrame 中列的每个值应用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31962089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com