私はこの奇妙なエラーが発生しました。私は、データフレームが存在する場合(またはそうでない場合はそれを作成する)データフレームを読み込んで変更し、それを同じターゲットパスに「重ね書き」モードで並べ替える形式で保存します。最初の実行でDataFrameをparquetフォーマットに保存しようとしたときに '上書き'モードを使用すると、
何のデータフレームがない場合、私は1つを作成し、それを保存します。これは、出力フォルダに4つのファイルを生成:
- _SUCCESS.crcを
- 一部-R- < .....> snappy.parquet.crc
- _SUCCESS
- 一部-R- <。 .....>。その後
をsnappy.parquet、セカンドランで、私はそれを修正し、データフレームを読んで、私はそれを上書きしようとすると、それは*part-r-<.....>.snappy.parquet file does not exist*
という例外がスローされます。例外が発生したときに
出力フォルダは空ですが、df.write.parquet(path, 'overwrite')
の実行前にフォルダには、このファイルが含まれています。
私は「偽」にspark.sql.cacheMetadataを設定しようとしましたが、それは助けにはなりませんでした。 spark.catalog.listTables()は空のリストを返すので、何も更新する必要はありません。
は今のところ、私は単純に出力フォルダの項目を削除し、データフレームを作成します。できます。しかし、なぜ元のメソッドが '上書き'モードで失敗するのですか?
ありがとうございました。
物理プランを作成したあとにsavemodeを適用すると問題が発生するsparkディレクトリを削除すると、savemodeを追加することができます –
sparkからs3に書き込んでいるときにappendも同じ問題と保存モードに直面しています – braj259