#apache-spark #pyspark #apache-spark-sql
#apache-spark #pyspark #apache-spark-sql
Вопрос:
Я использую spark 2.3.0 в кластере HDP 2.6.5 с hadoop 2.7.5. Я столкнулся с проблемой этим вечером. Я использую приведенную ниже перезапись динамического раздела в одном из моих сценариев проверки.
DF.coalesce(1).write.partitionBy("run_date","dataset_name").mode("overwrite").csv("/target/path")
Но это только запись пустого вывода с помощью файла _SUCCESS. В моем сеансе spark установлена следующая конфигурация.
.config("spark.sql.sources.partitionOverwriteMode","dynamic")
Это будет работать нормально, если я удалю любой из столбцов из .partitionBy()
Мне интересно, почему он не записывает вывод фрейма данных в csv с динамическим разделением на нескольких столбцах!
Будет здорово, если кто-нибудь сможет мне помочь в этом.
Комментарии:
1. вы имеете в виду перезапись существующего раздела?
2. @thebluephantom Нет. Даже если я создаю новый раздел, он записывает пустой вывод. при использовании одного столбца в предложении partitionBy() перезапись динамического раздела работает должным образом. Но с несколькими столбцами раздела, как указано выше, он выдает только файл _SUCCESS. При перезаписи статического раздела он работает так, как ожидалось, для нескольких столбцов. Также в кластере HDP 3.1 этот сценарий перезаписи динамического раздела с несколькими столбцами отлично работает с spark 2.3.2. Проблема, похоже, только в HDP 2.6.5
3. звучит как ошибка
4. Да. Даже я подозреваю то же самое. К счастью, мы уже официально перешли на HDP 3.1. Итак, проблема решена на данный момент 😁
5. Затем вы должны ответить и указать, что это ошибка.
Ответ №1:
Похоже, что эта проблема связана с ошибкой HDP 2.6.5, поскольку тот же сценарий перезаписи динамического раздела с несколькими столбцами отлично работал с HDP 3.1 и spark 2.3.2.