我正在尝试使用简单的包 Segue ( https://code.google.com/p/segue ) 在 EMR 上运行我的 R 代码。
我可以连接,但是当我尝试执行函数时,我收到与 S3 相关的 404 错误(如下)。任何人都可以推测这意味着什么或我可以如何解决它?我不了解 S3,也很少有 EMR 经验。
谢谢!!
#Setup R Environment
setwd("/home/jmiller/")
install.packages("rJava")
install.packages("caTools")
install.packages("segue_0.05.tar.gz", repos = NULL, type="source")
install.packages("Matching")
library(rJava)
library(caTools)
library(segue)
library(Matching)
#Import raw data
data <- read.delim("STUFF GOES HERE ")
#Write the Function
jdm <- function (data) {STUFF GOES HERE }
#Setup EMR
setCredentials("STUFF GOES HERE ", "STUFF GOES HERE ")
> emr.test <- createCluster(numInstances=2 )
STARTING - 2013-10-30 13:50:33
STARTING - 2013-10-30 13:51:05
STARTING - 2013-10-30 13:51:36
STARTING - 2013-10-30 13:52:07
STARTING - 2013-10-30 13:52:38
BOOTSTRAPPING - 2013-10-30 13:53:09
BOOTSTRAPPING - 2013-10-30 13:53:40
BOOTSTRAPPING - 2013-10-30 13:54:12
WAITING - 2013-10-30 13:54:43
Your Amazon EMR Hadoop Cluster is ready for action.
Remember to terminate your cluster with stopCluster().
Amazon is billing you!
> emr.result <- emrlapply(emr.test, data, jdm, taskTimeout=10)
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
Status Code: 404, AWS Service: Amazon S3, AWS Request ID: F39B3FDE8682AF39, AWS Error Code: NoSuchBucket, AWS Error Message: The specified bucket does not exist, S3 Extended Request ID: g9XDhofkpgux2/mBR4t8FhY3u9G85ZxsvXZkr1SZ2a0bA871LJKNSqtgeAfaFEG0
> stopCluster(emr.test)
因此,在关闭该集群后,我启动了另一个集群并尝试运行 Jeff Breen 的示例。令我惊讶的是,它实际上在我的第一次尝试中起作用。
outputEmr <- emrlapply(myCluster, myList, mean, na.rm=T) RUNNING - 2013-10-30 16:22:03 RUNNING - 2013-10-30 16:22:34 RUNNING - 2013-10-30 16: 23:06 等待 - 2013-10-30 16:23:37
但随后我尝试在同一个集群上使用我自己的函数,但它失败了,并显示与以前相同的错误消息,此时我删除了示例的结果并再次尝试。这再次产生了相同的 404 错误消息。
outputEmr <- emrlapply(myCluster, myList, mean, na.rm=T) .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, 中的错误:状态代码:404,AWS 服务: Amazon S3,AWS 请求 ID:8379F458DD96EC9B,AWS 错误代码:NoSuchBucket,AWS 错误消息:指定的存储桶不存在,S3 扩展请求 ID:1hjGApzfy5rd5JaM+mhhg35C/DUJ0qSa5V2uGXLjCV3tjTLfSUrM7zqsUCFKHCFH
所以我关闭了集群并启动了另一个,再次只运行示例代码。这又给了我404错误。我又试了 2 次,得到了同样的错误。
我从 Segue Google 小组的理解是,作者 JD Long 知道另外几个用户和我自己也遇到了这个问题,他正在调查它,但目前我们不知道是什么问题或如何修复它......