gpt4 book ai didi

Microsoft Azure HDInsight 上的 R 服务器 - 处理非常广泛的数据。 - rxExec?

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

下面的代码会让您了解我想要做什么。事实上:我正在处理估算的遗传学文件。总共大约有 1 亿个 SNP(变量)被估算为数千人。我想对每个单独的变量进行回归。任何单个模型在计算上都是一项微不足道的任务,问题是我正在处理巨大的文件并运行这些模型一亿次。

根据 Microsoft 的说法,他们的 HDInsight R 服务器针对长数据进行了优化。如果我有一千个变量和一亿个观察值,任务就会容易得多。

所以我想将我的巨大文件分成几部分。例如,将 1 个包含 100 万个 SNP 的数据集拆分为 10 个包含 100,000 个 SNP 的数据集。

这是我想要运行的代码,最后一行不起作用。需要知道如何将这 10 个较小的数据集分别发送到不同的节点,然后运行一个通用函数。一般来说,我想重现 mclapply() 函数,但不是在多个核心上运行它,而是在多个工作节点上运行它。

通常服务器的工作方式是自动将行分成几个部分,并以这种方式分配任务,这对于几千个观察来说是浪费资源

col <- 10000
row <- 500

df <- data.frame(matrix(rnorm(row*col),nrow=row))
caco <- sample(0:1, row, replace=T)



# The way I would do it locally for a normal dataset


fun <- function(x){
var <- df[[x]]
model <- summary(glm(caco ~ var, family="binomial"))
p <- c(x,coef(model)["var","Pr(>|z|)"])
return(p)
}

stuff <- names(df)
results <- lapply(stuff,fun)
# or
results <- mclapply(stuff,fun)



### what I want to do

# Split into several data frames
# possibly to other data manipulation, whatever is necessary

df1 <- df[,1:2000]
df2 <- df[,2001:4000]
df3 <- df[,4001:6000]
df4 <- df[,6001:8000]
df5 <- df[,8001:10000]

# I want to send each worker node one of these datasets, so each runs 2000 models

# this code does not work -
# but I think this is the general direction I want to go, using the
# rxExec function

out <- rxExec(fun, rxElemArg(stuff), execObjects=c("df1","df2","df3","df4")

最佳答案

请查看 RxExec 文档是否可以在此处提供帮助。 https://msdn.microsoft.com/en-us/microsoft-r/scaler-distributed-computing#parallel-computing-with-rxexec

特别是本节,它演示了类似的情况。 https://msdn.microsoft.com/en-us/microsoft-r/scaler-distributed-computing#plotting-the-mandelbrot-set

为了获得更好的运行时性能,用户可能希望直接在 rxExec 中操作输入文件,而不是通过 dataFrame 对象共享它。

如果您还有其他问题,请告诉我(microsoft dot com 的 xiaoyzhu)。

关于Microsoft Azure HDInsight 上的 R 服务器 - 处理非常广泛的数据。 - rxExec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41728154/

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