【发布时间】:2017-10-19 03:06:28
【问题描述】:
我已经使用 hadoop-credential api 在 jceks 文件中配置了 s3 密钥(访问密钥和秘密密钥)。用于相同的命令如下:
hadoop 凭据创建 fs.s3a.access.key -provider jceks://hdfs@nn_hostname/tmp/s3creds_test.jceks
hadoop 凭据创建 fs.s3a.secret.key -provider jceks://hdfs@nn_hostname/tmp/s3creds_test.jceks
然后,我使用直线打开与 Spark Thrift Server 的连接,并在连接字符串中传递 jceks 文件路径,如下所示:
beeline -u "jdbc:hive2://hostname:10001/;principal=hive/_HOST@?hadoop.security.credential.provider.path=jceks://hdfs@nn_hostname/tmp/s3creds_test. jceks;
现在,当我尝试使用 s3 中的位置创建外部表时,它会失败并出现以下异常:
CREATE EXTERNAL TABLE IF NOT EXISTS test_table_on_s3 (col1 String, col2 String) 以 ',' LOCATION 's3a://bucket_name/kalmesh/' 结尾的行格式分隔字段;
异常: 错误:org.apache.spark.sql.execution.QueryExecutionException:失败:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。 MetaException(消息:得到异常:java.nio.file.AccessDeniedException s3a://bucket_name/kalmesh:s3a://bucket_name/kalmesh 上的 getFileStatus:com.amazonaws.services.s3.model.AmazonS3Exception:禁止(服务:Amazon S3 ; 状态码:403;错误码:403 Forbidden;请求 ID:request_id),S3 扩展请求 ID:extended_request_id=) (state=,code=0)
【问题讨论】:
标签: hadoop apache-spark amazon-s3