【发布时间】: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