我正在尝试在Amazon EMR集群上配置Stocator以访问Amazon s3上的数据。我发现资源表明这应该是可能的,但是关于如何使其工作的细节很少。
当我启动EMR集群时,我使用以下配置:
{
"classification": "core-site",
"properties": {
"fs.stocator.scheme.list": "cos",
"fs.cos.impl": "com.ibm.stocator.fs.ObjectStoreFileSystem",
"fs.stocator.cos.impl": "com.ibm.stocator.fs.cos.COSAPIClient",
"fs.stocator.cos.scheme":"cos"
}
}
然后我尝试使用cos://mybucket.service/myfile
由于缺少凭证而产生错误。
我使用以下内容将spark-shell
中的凭据添加到属性中:
val credentials = new com.amazonaws.auth.DefaultAWSCredentialsProviderChain().getCredentials
sc.hadoopConfiguration.set("fs.cos.service.access.key",credentials.getAWSAccessKeyId)
sc.hadoopConfiguration.set("fs.cos.service.secret.key",credentials.getAWSSecretKey)
现在,当我尝试访问cos://mybucket.service/myfile
时,我收到错误:org.apache.spark.sql.AnalysisException: Path does not exist:
。
使用s3://mybucket/myfile
访问文件有效,因为它没有使用Stocator。也可以通过amazon CLI访问该文件。
是否有任何在线资源详细介绍如何Stocator
使用AWS
?
有没有人自己成功完成此操作,您可以分享您的配置吗?
答案 0 :(得分:-1)
我会使用netflix,因为我确信它在那里运作良好。