如何在 sparkR 中测试 DataFrame 中的条目

How to test entries in a DataFrame in sparkR

我在 sparkR 中有一个名为 pgz 的 DataFrame。它包含 user_idtime。对于固定的 user_id k 我得到

y <- filter(pgz, pgz$user_id == k)

当我输入 head(y) 时,我可以看到 user_id k 的一些时间。 "2005-02-04" , "2005-06-06" .. 它们都是排序的,因此它们会增加。 对于这个user_id我想测试他的times是否大于我设置的固定时间

fixtime <- "2010-01-01"

我想保存所有时间大于 fixtime 的 user_id。 如何做到这一点?

首先,让我们创建一些示例数据进行测试

set.seed(1)
dd = data.frame(id = base::sample(1:3, 4,TRUE), 
                times = base::sample(c("2005-02-04" , "2005-06-06", "2007-02-04" , "2006-06-06"), 
                                     12, TRUE))
dd$times = as.Date(dd$times)
NROW(dd[dd$id==1 & dd$times > as.Date("2006-01-01"),])

对于这个数据集,我们应该得到答案2。

创建 Spark 数据框

dd_sp = createDataFrame(sqlContext, dd) 

然后筛选

dd_sp_k = filter(dd_sp, dd_sp$id== 1 & 
             dd_sp$times > as.Date("2006-01-01"))

然后我们可以用summarise得到data frame的长度

## This seems a bit clunky, bit it works.
summarize(dd_sp_k, count = n(dd_sp_k$times)) %>%
  head

给出 2。