火花流的 S3 检查点导致错误

Posted

技术标签:

【中文标题】火花流的 S3 检查点导致错误【英文标题】:S3 checkpointing for spark streaming leads to an error 【发布时间】:2016-01-19 00:35:12 【问题描述】:

我已使用 getOrCreate 方法为我的 sparkstreaming 应用程序启用检查点。检查点目录指向 S3 存储桶。 我遇到的问题是访问 S3 时的凭据问题:

原因:java.lang.IllegalArgumentException:AWS 访问密钥 ID 和秘密访问密钥必须分别指定为 s3 URL 的用户名或密码,或者通过设置 fs.s3.awsAccessKeyId 或 fs.s3。 awsSecretAccessKey 属性(分别)。

我已经设置了环境变量(AWS_SECRET_KEY 和 AWS_ACCESS_KEY)。 我的 fs.s3.awsAccessKeyId 或 fs.s3.awsSecretAccessKey 也已在 application.conf 中指定。所以我不知道为什么它仍然失败。

【问题讨论】:

【参考方案1】:

环境变量(AWS_SECRET_KEY 和 AWS_ACCESS_KEY)在 Spark 1.3 之后不再起作用。

新方法请参考:How to read input from S3 in a Spark Streaming EC2 cluster application

val conf = new SparkConf().setAppName("Simple Application").setMaster("local")      
val sc = new SparkContext(conf)
val hadoopConf=sc.hadoopConfiguration;
hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoopConf.set("fs.s3.awsAccessKeyId",myAccessKey)
hadoopConf.set("fs.s3.awsSecretAccessKey",mySecretKey)

【讨论】:

以上是关于火花流的 S3 检查点导致错误的主要内容,如果未能解决你的问题,请参考以下文章

火花检查点比缓存更快吗?

如何直接在 Azure Blob 存储上存储火花作业(结构化流)的检查点?

如何检查火花数据框是不是为空?

如何检查火花数据框是不是为空?

如何使用火花流检查 rdd 是不是为空?

检查数据框中的记录数是不是大于零而不使用计数火花