После недавнего объявления о строгой согласованности S3 при чтении и записи я хотел бы попробовать новые коммиттеры S3A, такие как волшебный.
Согласно документации Spark , нам нужно добавить два пути к классам: BindingParquetOutputCommitter
и PathOutputCommitProtocol
добавить в этот коммит.
Официальная документация предлагает использовать Spark, построенный с профилем hadoop3.2. Есть ли способ добавить два класса без перекомпиляции Spark? (Я не могу использовать уже собранный Spark по техническим причинам)
Я использую Спарк 3.0.1
Я уже проверил этот ответ, но, к сожалению, OP переключился на коммиттеров S3A с открытым исходным кодом, предоставленных EMR.
Вам нужна версия spark, созданная с помощью модуля -Phadoop-cloud. который добавляет новые классы в spark-hadoop-cloud.jar и добавляет соответствующие зависимости, которые для S3A
hadoop-aws-${the-exact-version-of-hadoop-jars-you-have}.jar
aws-sdk-something-${the-exact-version-that-hadoop-jar-was-built-with}.jar
чтобы вы могли проверить ветку искры, которую вы используете, и выполнить сборку maven только для этого модуля.
mvn -pl hadoop-cloud -Phadoop-cloud -Dhadoop.version=$hadoop-version install -DskipTests
и вы получаете новый JAR-файл spark-hadoop-cloud, который можно использовать с новыми материалами.
Вы можете протестировать этот материал в автономном режиме Spark, просто выполните минимальную работу по записи данных и убедитесь, что файл _SUCCESS содержит некоторую сводку JSON о задании.
Какой бы коммиттер вы ни использовали, убедитесь, что ваши корзины настроены на удаление незавершенных загрузок через несколько дней. Вы должны делать это везде в любом случае.
ХТН
см.: github.com/steveloughran/zero-rename-committer/releases.
Если вы выполняете сборку с помощью команды stevel's mvn, вы также должны включить флаг -Phadoop-3.2
, чтобы флаг extra-source-dir
подхватывался в pom.xml и компилировал классы коммиттера в JAR. Таким образом, полная команда будет mvn -pl hadoop-cloud -Phadoop-cloud -Phadoop-3.2 -Dhadoop.version=$hadoop-version install -DskipTests
. См. https://github.com/apache/spark/blob/de351e30a90dd988b133b3d00fa6218bfcaba8b8/hadoop-cloud/pom.xml#L207
Большое спасибо за этот ответ и вашу работу над коммиттерами. Я наконец понял со всеми документами, которые вы написали, я не буду удалять этот вопрос, так как я думаю, что это один из самых четких ответов на данный момент.