sparkR - 列表中的子集值

sparkR - subset values in list

如何为 spark 数据框执行以下任务。 在 dplyr 中,我会这样做:

library(dplyr)
df1 <- data.frame(x = 1:10, y = 101:110)
df2 <- data.frame(r = 5:10, s = 205:210)
df3 <- df1 %>% filter(x %in% df2$r)

如何为 sparkR 数据帧执行 filter(x %in% df2$r) 命令?

我刚刚有类似的问题,这似乎适用于从列表中过滤:

df3 <- filter(df1, ("x in ('string1','string2','string3')"))

对于您的情况,您可能需要考虑加入

df3 <- drop(join(df1, SparkR::distinct(SparkR::select(df2,'r')), df1$x==df2$r),'r')

(虽然可能有点太贵了)..

干杯, 安娜

要么不将查找转换为 SparkDataFrame:

> df1 <- createDataFrame(data.frame(x = 1:10, y = 101:110))
> df2 <- data.frame(r = 5:10, s = 205:210)
> filter(df1, df1$x %in% df2$r)
SparkDataFrame[x:int, y:int]

或将两者都转换为 join:

> df1 <- createDataFrame(data.frame(x = 1:10, y = 101:110))
> df2 <- createDataFrame(data.frame(r = 5:10, s = 205:210))
> join(df1, df2, df1$x == df2$r, "leftsemi")
SparkDataFrame[x:int, y:int]

并且不要将 dplyr 与 SparkR 一起使用。对于 dplyr 兼容 API 使用 sparklyr.