【问题标题】:S3 Checkpoint with Structured Streaming带有结构化流的 S3 检查点
【发布时间】:2018-10-27 20:32:30
【问题描述】:

我已经尝试了Apache Spark (Structured Streaming) : S3 Checkpoint support中给出的建议

我仍然面临这个问题。以下是我得到的错误

17/07/06 17:04:56 WARN FileSystem: "s3n" is a deprecated filesystem 
name. Use "hdfs://s3n/" instead.
Exception in thread "main" java.lang.IllegalArgumentException: 
java.net.UnknownHostException: s3n

我的代码中有这样的东西

SparkSession spark = SparkSession
    .builder()
    .master("local[*]")
    .config("spark.hadoop.fs.defaultFS","s3")
    .config("spark.hadoop.fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
    .config("spark.hadoop.fs.s3n.awsAccessKeyId","<my-key>")
    .config("spark.hadoop.fs.s3n.awsSecretAccessKey","<my-secret-key>")
    .appName("My Spark App")
    .getOrCreate();

然后像这样使用检查点目录:

StreamingQuery line = topicValue.writeStream()
   .option("checkpointLocation","s3n://<my-bucket>/checkpointLocation/")

感谢任何帮助。提前致谢!

【问题讨论】:

  • 试试config("spark.hadoop.fs.defaultFS","s3n").config("spark.hadoop.fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")。虽然我绝对不推荐使用 S3 作为 Spark 的分布式文件系统,但它在读取时具有最终一致性。
  • 什么时候使用 s3a,什么时候使用 s3n?
  • 我认为s3a 是两者中较新的。但我的意思是你通常根本不想使用 S3。
  • 那也没用..
  • 这种弃用方法很奇怪。它告诉你不要使用像“localhost:8080”这样的文件系统引用作为(HDFS)实例的名称,而它现在需要像“hdfs://localhost:8080/”这样的模式。如果它对任何其他文件系统都这么说(这里是 s3),那么 t 就糊涂了,

标签: java apache-spark amazon-s3 spark-structured-streaming checkpointing


【解决方案1】:

对于结构化流中 S3 的检查点支持,您可以尝试以下方式:

SparkSession spark = SparkSession
    .builder()
    .master("local[*]")
    .appName("My Spark App")
    .getOrCreate();

spark.sparkContext.hadoopConfiguration.set("fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
spark.sparkContext.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "<my-key>")
spark.sparkContext.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "<my-secret-key>")

然后checkpoint目录可以是这样的:

StreamingQuery line = topicValue.writeStream()
   .option("checkpointLocation","s3n://<my-bucket>/checkpointLocation/")

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2021-06-02
    • 2017-06-19
    • 2018-03-18
    • 2018-06-22
    • 2023-03-10
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    相关资源
    最近更新 更多