r - 在 sparklyr 或 sparkR 中逐行处理表
问题描述
我在 sparklyr 中加载了一个基因表达矩阵(33000 行 x 180 个样本),我想处理探针(行)而不是样本(列)。
library(sparklyr)
sc <- spark_connect(master = "local")
library(dplyr)
ge <- read.delim("plier-gcbg-sketch.summary.txt",
sep="\t", comment.char="#")
ge_tbl <- copy_to(sc, ge)
我最初的想法是申请:
mean_by_gene <- ge %>% select(-probeset_id) %>%
rowwise() %>% do( data.frame(M=mean(as.numeric(.))) )
但似乎 rowwise 在 sparklyr 中不可用。所以,经过一番谷歌搜索后,我申请了:
ge_tbl2 %>% select(-probeset_id) %>%
spark_apply(function(df) {
data.frame(apply(df, 1, function(x) mean(as.numeric(x))))
} )
这很好用,因为它生成具有每行平均值的 data.frame。但我对此有些怀疑。
问题:
- 当我测试时间(使用 system.time)时,sparklyr 比标准 R 版本慢(sparklyr:0.747s、0.702s、0.731s;标准 R:0.009、0.008、0.008)。为什么?(对于测试,我只使用了 10 个探针(行))。
- 当我尝试计算完整矩阵(33000 行 x 180 列)而不是少量列(10~100)时,火花崩溃。我假设我没有正确处理表格,那么我该如何利用火花功能呢?
这是我获得的错误片段:
[...]
18/06/13 13:44:21 INFO sparklyr: RScript (4377) found 33297 rows
18/06/13 13:46:08 INFO sparklyr: RScript (4377) retrieved 33297 rows
18/06/13 13:46:19 INFO sparklyr: RScript (4377) computing closure
18/06/13 13:46:51 ERROR sparklyr: RScript (4377) terminated unexpectedly: invalid subscript type 'list'
18/06/13 13:46:51 ERROR sparklyr: Worker (4377) failed to complete R process
[...]
解决方案
推荐阅读
- calendly - calendly iframe 嵌入响应数据
- ruby-on-rails - 将 Act as Votable 与分页、未定义方法一起使用
- javascript - ReactNative/Expo 错误,元素类型无效?
- php - 调用未定义的方法 Smalot\PdfParser\Encoding::__toString()
- aws-glue - 从 Athena 控制台访问胶水表
- postgresql - 在postgresql中将每行的查询导出到csv
- javascript - 我有一个这样的对象数组
- rasa-nlu - 如何在rasa2.0中使用http解析发布请求解析消息时指定模型名称?
- php - 如何在 PHP 中借助 ajax 获取 jQuery 值并在获取值后刷新页面?
- python - Python:如何以数值方式集成具有两个未知参数的函数