Spark AWS emr检查点位置

时间:2017-02-24 15:04:07

标签: scala apache-spark emr amazon-emr graphframes

我在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上检查点?

3 个答案:

答案 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)