0

作为论坛的活跃用户,我相对较新,但首先要感谢大家的贡献,因为多年来我一直在寻找答案......

今天,我有一个问题没有人解决或者我无法找到......

作为测试系统的一部分,我正在尝试从 s3(AWS)并行读取文件以触发(本地计算机)。我使用过 mclapply,但是当设置超过 1 个核心时,它会失败......

示例:(相同的代码在使用一个内核时有效,但在使用 2 个内核时失败)

new_rdd_global <- mclapply(seq(file_paths), function(i){spark_read_parquet(sc, name=paste0("rdd_",i), path=file_paths[i])}, mc.cores = 1)

new_rdd_global <- mclapply(seq(file_paths), function(i){spark_read_parquet(sc, name=paste0("rdd_",i), path=file_paths[i])}, mc.cores = 2) 警告消息:在 mclapply (seq(file_paths), function(i) { : 所有计划的核心在用户代码中遇到错误

有什么建议???

提前致谢。

4

1 回答 1

0

只需通过 1spark_read_parquet()次调用将所有内容读入一个表,这样 Spark 会为您处理并行化。如果您需要单独的表,您可以在之后拆分它们,假设有一列告诉您数据来自哪个文件。mcapply()通常,在将 Spark 与 R一起使用时,您不需要使用。

于 2017-10-28T04:17:12.803 回答