Я работаю над блокнотами Azure Synapsse Analytics и хочу загрузить файлы Parquet в DataFrames, выполнить некоторые преобразования, а затем перезаписать исходные файлы преобразованными данными. Этот процесс отлично работает для всех моих файлов, кроме одного, который выдает ошибку.
Вот упрощенная версия моего кода:
%%pyspark
folder_path = 'abfss://example_folder_path/'
df = spark.read.load(folder_path, format='parquet').cache()
display(df.limit(10))
df.createOrReplaceTempView("dcp")
# Transformations
display(final.limit(10))
df.write.mode('overwrite').parquet(folder_path)
df.unpersist()
В коде возникла проблема с перезаписью этого конкретного файла, и я получаю следующую ошибку:
Я убедился, что проблемный файл действительно является паркетом, и подтвердил, что для этого файла или каталога нет проблем с разрешениями. Я также пытался найти разницу между этим файлом и остальными, чтобы определить, почему он не работает, но ничего не нашел.
Есть ли у кого-нибудь идеи относительно того, почему этот конкретный файл вызывает проблемы или что я могу сделать, чтобы это исправить? Любая помощь будет принята с благодарностью.


Это происходит потому, что вы читаете и перезаписываете одну и ту же папку. Это то, что я не буду рекомендовать, но если вы хотите сделать, то есть 2 варианта:
Опция 1 -
folder_path = 'abfss://example_folder_path/'
df = spark.read.load(folder_path, format='parquet')
##Transformation
# df.transform()
df.write.mode('overwrite').parquet(tempfolder)
spark.read.load(tempfolder, format='parquet').write.mode('overwrite').parquet(folder_path)
Вариант 2 -
%%pyspark
folder_path = 'abfss://example_folder_path/'
df = spark.read.load(folder_path, format='parquet').cache()
##Transformation
# df.transform()
df.cache()
df.show(10)
df.write.mode('overwrite').parquet(folder_path)
df.unpersist()
не могли бы вы поделиться примером файла?