Динамический раздел Spark 2.3. Не работает на S3 AWS EMR 5.13.0 - PullRequest
0 голосов
/ 10 мая 2018

Динамическое разбиение, введенное в Spark 2.3, похоже, не работает на AWS EMR 5.13.0 при записи в S3

При выполнении временный каталог создается в S3, но исчезает после завершения процесса беззапись новых данных в окончательную структуру папок.

Проблема была обнаружена при выполнении приложения Scala / Spark 2.3 в EMR 5.13.0.

Конфигурация выглядит следующим образом:

var spark = SparkSession
  .builder
  .appName(MyClass.getClass.getSimpleName)
  .getOrCreate()

spark.conf.set("spark.sql.sources.partitionOverwriteMode","DYNAMIC") // also tried "dynamic"

Код, который записывает в S3:

val myDataset : Dataset[MyType] = ...

val w = myDataset
    .coalesce(10)
    .write
    .option("encoding", "UTF-8")
    .option("compression", "snappy")
    .mode("overwrite")
    .partitionBy("col_1","col_2")

w.parquet(s"$destinationPath/" + Constants.MyTypeTableName)

, где destinationPath является корзиной / папкой S3

Кто-нибудь еще сталкивался с этой проблемой?

1 Ответ

0 голосов
/ 20 декабря 2018

Обновление до EMR 5.19 устраняет проблему. Однако мой предыдущий ответ неверен - использование оптимизатора EMRFS S3 не имеет к этому никакого отношения. Коммиттер, оптимизированный для EMRFS S3, автоматически пропускается, если для spark.sql.sources.partitionOverwriteMode установлено значение dynamic: https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-committer-reqs.html

Если вы можете обновить хотя бы до EMR 5.19.0, AWM-оптимизированный EMRFS S3 Committer решит эти проблемы.

--conf spark.sql.parquet.fs.optimized.committer.optimization-enabled=true

См .: https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-optimized-committer.html

...