Я хочу переписать определенные разделы вместо всех в искровом режиме. Я пытаюсь следующая команда:Перезаписать конкретные разделы в методе записи данных с помощью свечей.
df.write.orc('maprfs:///hdfs-base-path','overwrite',partitionBy='col4')
где ФР dataframe имея дополнительные данные, которые будут перезаписаны.
hdfs-base-path содержит основные данные.
Когда я пытаюсь выполнить приведенную выше команду, она удаляет все разделы и вставляет те, которые присутствуют в df по пути hdfs.
В чем заключается мое требование переписать только те разделы, которые присутствуют в df по указанному пути hdfs. Может кто-нибудь, пожалуйста, помогите мне в этом?
Большое спасибо Sim для ответа , Несколько сомнений больше, если предположить, что исходный dataframe имеет данные для около 100 разделов, тогда мне нужно разбить этот фрейм данных на еще 100 фреймов данных с соответствующим значением раздела и вставить непосредственно в каталог разделов. Можно ли сохранить эти 100 разделов параллельно? Также я использую Spark 1.6.1 Если я использую формат файла orc, как я могу прекратить выдавать файлы метаданных для этого, это то же самое, что вы упомянули для паркета? – yatin
Re: metadata, no, ORC - это другой формат, и я не думаю, что он создает файлы без данных. С 1.6.1 вам нужны только файлы ORC в подкаталогах дерева разделов. Поэтому вам придется удалить '_SUCCESS' вручную. Вы можете писать параллельно нескольким разделам, но не с одной и той же работы. Запуск нескольких заданий на основе возможностей вашей платформы, например, с использованием REST API. – Sim
Любое обновление об этом? Сохраняет ли saveToTable() только отдельные разделы? Является ли искра достаточно умной, чтобы выяснить, какие разделы были переписаны? –