Контрольная точка S3 со структурированной потоковой передачей

Я попробовал предложения, приведенные в Apache Spark (структурированная потоковая передача) : поддержка контрольных точек S3

Я все еще сталкиваюсь с этой проблемой. Ниже ошибка, которую я получаю

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/")

Любая помощь приветствуется. Заранее спасибо!


person vkr    schedule 07.07.2017    source источник
comment
Попробуйте config("spark.hadoop.fs.defaultFS","s3n") и .config("spark.hadoop.fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem"). Хотя я определенно не рекомендую использовать S3 в качестве распределенной файловой системы для Spark, она обеспечивает консистентность при чтении.   -  person Yuval Itzchakov    schedule 07.07.2017
comment
когда я использую s3a и когда s3n?   -  person vkr    schedule 07.07.2017
comment
Я думаю, что s3a новее из двух. Но я имел в виду, что вы вообще не хотите использовать S3.   -  person Yuval Itzchakov    schedule 07.07.2017
comment
Это тоже не сработало..   -  person vkr    schedule 07.07.2017
comment
Этот метод устаревания является странным. Он предупреждает вас об использовании ссылки на файловую систему, такой как localhost:8080, в качестве имени экземпляра (HDFS), когда теперь он ожидает схему, подобную hdfs://localhost:8080/. Если сказано, что для любой другой файловой системы (здесь, s3), то t запутался,   -  person stevel    schedule 10.07.2017
comment
В вашем комментарии к этому сообщению ‹stackoverflow.com/questions/42006664/› вы упомянули, например, от контрольной точки до S3, но у вас большой промежуток между контрольными точками, чтобы время до контрольной точки не приводило к сбою вашего потокового приложения My вопрос вот в чем, щас даже контрольные точки возможны в s3 со структурированной потоковой передачей?   -  person vkr    schedule 11.07.2017


Ответы (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>")

и тогда каталог контрольной точки может быть таким:

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

Надеюсь, это поможет!

person himanshuIIITian    schedule 16.07.2017