如何为火花数据框执行以下任务。 在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数据帧执行过滤器(%df2 $ r中的x%)命令?
答案 0 :(得分:1)
我刚才有类似的问题,这似乎适用于从列表中过滤:
df3 <- filter(df1, ("x in ('string1','string2','string3')"))
在您的情况下,您可能需要考虑加入
df3 <- drop(join(df1, SparkR::distinct(SparkR::select(df2,'r')), df1$x==df2$r),'r')
(虽然可能有点贵)..
欢呼声, 安娜
答案 1 :(得分:1)
要么不将查找转换为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
。