我在EMR上运行一个火花工作,但需要创建一个检查点。我尝试使用s3但收到此错误消息
example.com/en
这是我的示例代码
17/02/24 14:34:35 ERROR ApplicationMaster: User class threw exception:
java.lang.IllegalArgumentException: Wrong FS: s3://spark-
jobs/checkpoint/31d57e4f-dbd8-4a50-ba60-0ab1d5b7b14d/connected-
components-e3210fd6/2, expected: hdfs://ip-172-18-13-18.ec2.internal:8020
java.lang.IllegalArgumentException: Wrong FS: s3://spark-
jobs/checkpoint/31d57e4f-dbd8-4a50-ba60-0ab1d5b7b14d/connected-
components-e3210fd6/2, expected: hdfs://ip-172-18-13-18.ec2.internal:8020
如何在AWS EMR上检查点?
答案 0 :(得分:1)
现在已经修复了Spark的错误,这意味着您只能检查默认FS,而不是任何其他FS(如S3)。它固定在主人身上,不知道后退。
如果它让你感觉更好,那么检查点的工作方式是:写入然后重命名()在对象存储上足够慢,你可能会发现自己在本地更好地检查点,然后自己上传到s3。
答案 1 :(得分:1)
主分支中有一个修复程序,允许检查点也是s3。我能够构建它并且它起作用所以这应该是下一个版本的一部分。
答案 2 :(得分:0)
尝试使用AWS身份验证,例如:
val hadoopConf: Configuration = new Configuration()
hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoopConf.set("fs.s3n.awsAccessKeyId", "id-1")
hadoopConf.set("fs.s3n.awsSecretAccessKey", "secret-key")
sparkSession.sparkContext.getOrCreate(checkPointDir, () =>
{ createStreamingContext(checkPointDir, config) }, hadoopConf)